1. Почему файлы cookie должны быть защищены от несанкционированного доступа
Важная причина, по которой Cookie защищена от несанкционированного доступа, заключается в том, чтоФайл cookie хранит сеансовый билет-SessionID и некоторую информацию о пользователе для оценки информации о сеансе (Session) текущего пользователя, вошедшего в систему.. Когда HTTP-запрос инициирован, заголовок HTTP-запроса будет содержать файл cookie, а файл cookie будет содержать идентификатор сеанса. Внутренняя служба получает текущую информацию о сеансе в соответствии с SessionID. Если информация о сеансе существует, пользователь, представляющий запрос, уже вошел в систему. Сервер возвращает запрошенные данные в браузер в соответствии с разрешениями вошедшего в систему пользователя.
Поскольку файлы cookie хранятся на стороне клиента, пользователи могут изменять их по своему усмотрению. Поэтому существуют определенные риски безопасности.
2. Примеры
username
Это должно объяснить эту концепцию простым для понимания способом, и хорошо известно, что реальные проекты этого не сделают.
- Пользователь
wall
Введите имя пользователя и пароль на стороне браузера и инициируйте запрос POST на внутренний сервер. Внутренний сервер проверяет, является ли он законным, возвращает ответ иSet-Cookie
заsessionid=***;username=wall;
. - После получения HTTP-ответа браузер находит
Set-Cookie
, сохраните его в локальной памяти или на жестком диске. - Сторона браузера снова инициирует запрос, передавая информацию о файлах cookie.
sessionid=***;username=wall;
, попросите изменить информацию об аватаре. - сервер согласно
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 должны быть созданы соответствующие подписи, чтобы предотвратить злонамеренное вмешательство.
Друзья, которым нравятся мои статьи, могут подписаться на меня следующими способами:
- "звезда"или"смотреть"мойGitHub blog
- RSS-канал моего личного блога:База мистера Вана