Каковы некоторые рекомендации для веб-аутентификации на основе файлов cookie?

11

Я работаю над небольшим побочным проектом с использованием CGI и Python (масштабируемость не проблема, и она должна быть ОЧЕНЬ простой системой).

Я думал о внедрении аутентификации с использованием файлов cookie, и мне было интересно, есть ли какие-либо признанные лучшие практики.

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

rdasxy
источник

Ответы:

12

В лучшем случае: один идентификатор, который относится ко всей другой необходимой информации, которая, в свою очередь, хранится в базе данных.

Есть моменты, когда имеет смысл поместить туда какую-то другую информацию, но они редки. Вы всегда должны спросить себя, почему, по крайней мере, пять раз .

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

Наконец, и самое главное, защитите своего пользователя от атак XSS и CSRF .

Защита XSS, как правило, так же проста, как и осторожность при включении Javascript, поскольку Javascript на другом сервере может быть изменен без вашего ведома, и этот Javascript имеет доступ к данным cookie. Так что, если вы используете сеть доставки контента Evil Corp. для обслуживания сценария jQuery, они могут внезапно добавить код для отправки им файлов cookie ваших пользователей. Вы не знали бы; Ваши пользователи не будут знать.

Либо загружайте сценарии и обслуживайте их со своего собственного сервера, либо используйте очень надежные CDN, такие как Google или Yahoo.

Защита от CSRF обычно осуществляется с помощью случайного значения в скрытом поле формы. Значение сохраняется в сеансе, чтобы при повторной отправке формы можно было проверить, что она получена с того же компьютера.

Большинство веб-фреймворков теперь имеют очень простые методы для включения этого токена.

прецизионный самописец
источник
3
  • Используйте secureи httpOnlyфлаги.
  • Кодировать данные cookie сеанса и криптографически подписывать закодированные данные с помощью MAC. Проверяйте подпись на сервере каждый раз, прежде чем пытаться декодировать данные cookie сеанса. (Rails делает это по умолчанию.)
yfeldblum
источник