2016-10-24 4 views
1

Здравствуйте разработчикам коллегCookie-вызовы, храня вошедшего пользователя

меня явно недооценены вещь при разработке мой первый сложный веб-сайт, где требуется создание пользователей и Логин.

Похоже, что файлы cookie могут быть отредактированы и изменены пользователем вошедшим в систему с помощью некоторых инструментов разработчика, то есть в Google Chrome. Этого я никогда не думал.

Итак, вот моя проблема.

  1. Когда пользователь вошел в систему, я сохраняю имя пользователя в файле cookie.
  2. Если имя пользователя-cookie не пустое, и я могу найти файл пользователя с этим именем, пользователь сам вошел в систему. В противном случае ни один пользователь не вошёл в систему.
  3. Когда пользователь выходит из системы, я просто заканчиваю файл cookie, который отлично работает.

Проблема в том, что пользователь, очевидно, может редактировать содержимое файла cookie, вне веб-приложения или с помощью javascript.

Что было бы правильным подходом здесь, чтобы гарантировать, что cookie-имя пользователя не будет скомпрометировано каким-либо образом, другим моим веб-приложением?

Выполнение их только для чтения невозможно, полагаю. Наверное, шифрование файла cookie и последующее дешифрование могут работать. Тогда cookie будет бессмысленным для пользователя, и если он будет изменен, это приведет к выходу из системы, поскольку при дешифровке отредактированного файла cookie не будет найдено допустимого имени пользователя.

Я преследовал куки Google, и кажется, что существует много файлов cookie xxID, содержащих мусор. Означает ли это, что шифрование/дешифрование является единственным способом заставить его работать? Я также рассмотрел какой-то билет для входа, но для этого потребуется просмотр таблицы каждый раз, когда пользователь взаимодействует с моей веб-страницей.

Может ли кто-нибудь дать мне подсказку относительно того, что было бы правильным подходом?

Заранее спасибо С наилучшими пожеланиями, Карстен Heitmann

ответ

0

Вы должны смотреть на управлениесеанса для языка, который вы используете.

Традиционный подход заключается в том, что когда пользователь входит в систему, ваше приложение генерирует длинный криптографически случайный токен, называемый «идентификатор сеанса», и устанавливает его в файл cookie. Он хранит данные, например, кто зарегистрирован на стороне сервера, идентифицированный случайным значением, поэтому, когда возвращаемый логин возвращается, браузер отправляет файл cookie с произвольным идентификатором сеанса, и приложение может искать данные сеанса на стороне сервера. Таким образом, злоумышленник не имеет возможности угадать действительный идентификатор сеанса для зарегистрированного пользователя, предполагая, что идентификатор сеанса криптографически случайен и достаточно длинный (что более точно означает, что он имеет достаточную энтропию). Выход из системы означает удаление данных сеанса на стороне сервера, а также удаление файла cookie, но это не самая важная часть - сеанс в любом случае будет недействительным.

Обратите внимание, что вы не должны кодировать это самостоятельно. Вы не указали язык и среду, в которой вы работаете, но управление сеансами - довольно сложный бизнес, если вы хотите его защитить, и он уже предоставляется большинством языков/фреймворков.

Просто для любопытства подход шифрования, о котором вы упоминаете, является, по сути, действительным.Некоторые структуры на самом деле это делают, но вы также не должны пытаться это кодировать, потому что очень легко ошибиться, необходимо много заботиться о том, чтобы сделать его достаточно безопасным. К сожалению, ответ здесь не правильный формат, чтобы вдаваться в подробности, я боюсь.

Кстати, вы упомянули о Google. Они используют свое единственное решение для входа в систему, это очень сложно по сравнению с простым управлением сеансом, поэтому, вероятно, это не лучший пример для вас. Найдите простые веб-сайты, большинство из которых работают традиционным способом.

+0

А, я вижу. Я должен попытаться сохранить какой-то временный файл сервера для каждого сеанса пользователя. Пользовательский файл создается при входе в систему и удаляется при выходе пользователя из системы. Этот конкретный токен должен быть случайным токеном какого-либо типа, сохраненным как клиентская сторона cookie. Если кто-то пытается отредактировать содержимое файла cookie, он будет указывать на никуда, и, следовательно, сеанс недействителен. Да. Полагаю, это сделало бы трюк. –

+0

О, bugger. Не закончил мой вход, извините. –

+0

AAARGH .... Я новичок на этом сайте, извините :-) Похоже, что введите key = add comment. В любом случае ... Я попытаюсь реализовать эту идею на мгновение. Сессии никогда не происходили со мной. Большое спасибо за эту идею. С уважением, Karsten –

Смежные вопросы