Механизм защиты от несанкционированного доступа к файлам cookie

задняя часть внешний интерфейс сервер алгоритм

1. Почему файлы cookie должны быть защищены от несанкционированного доступа

Важная причина, по которой Cookie защищена от несанкционированного доступа, заключается в том, чтоФайл cookie хранит сеансовый билет-SessionID и некоторую информацию о пользователе для оценки информации о сеансе (Session) текущего пользователя, вошедшего в систему.. Когда HTTP-запрос инициирован, заголовок HTTP-запроса будет содержать файл cookie, а файл cookie будет содержать идентификатор сеанса. Внутренняя служба получает текущую информацию о сеансе в соответствии с SessionID. Если информация о сеансе существует, пользователь, представляющий запрос, уже вошел в систему. Сервер возвращает запрошенные данные в браузер в соответствии с разрешениями вошедшего в систему пользователя.

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

2. Примеры

usernameЭто должно объяснить эту концепцию простым для понимания способом, и хорошо известно, что реальные проекты этого не сделают.

  1. ПользовательwallВведите имя пользователя и пароль на стороне браузера и инициируйте запрос POST на внутренний сервер. Внутренний сервер проверяет, является ли он законным, возвращает ответ иSet-Cookieзаsessionid=***;username=wall;.
  2. После получения HTTP-ответа браузер находитSet-Cookie, сохраните его в локальной памяти или на жестком диске.
  3. Сторона браузера снова инициирует запрос, передавая информацию о файлах cookie.sessionid=***;username=wall;, попросите изменить информацию об аватаре.
  4. сервер согласноsessionidУбедитесь, что текущий пользователь вошел в систему в соответствии сusername, Найдите соответствующие данные в базе данных и измените информацию об аватаре.

Если текущий пользователь знаетusernameроль, изменитьusername=pony. Если запрос будет инициирован снова, сервер изменит его после получения запроса.usernameзаponyДанные. Таким образом, риск злонамеренной подделки данных подвергается риску.

3. Подпись с защитой от несанкционированного доступа

Сервер генерирует подпись для каждого элемента cookie. Если пользователь вмешивается в файл cookie, он не может соответствовать подписи. Таким образом определяется, были ли данные подделаны.

Принцип заключается в следующем:

  • Сервер предоставляет алгоритм генерации подписиsecret
  • Генерация подписи из методаsecret(wall)=34Yult8i
  • Поместите сгенерированную подпись в соответствующий элемент cookie.username=wall|34Yult8i. Среди них содержание и подпись используются для|разделены.
  • Сервер проверяет, был ли контент подделан в соответствии с полученным контентом и подписью.

Возьмите каштан:

Например, сервер получает элемент Cookie в запросеusername=pony|34Yult8i, то используйте алгоритм генерации подписиsecret(pony)=666. Подпись, полученная по алгоритму666Если это не соответствует подписи данных в запросе, это доказывает, что данные были подделаны.

4. Защита конфиденциальных данных

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


Друзья, которым нравятся мои статьи, могут подписаться на меня следующими способами: