Які найкращі практики щодо веб-аутентифікації на основі файлів cookie?


11

Я працюю над невеликим побічним проектом, використовуючи CGI та Python (масштабованість - це не проблема, і вона повинна бути ДУЖЕ простою системою.)

Я думав здійснити автентифікацію за допомогою файлів cookie, і мені було цікаво, чи існують якісь встановлені найкращі практики.

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

Відповіді:


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 робить це за замовчуванням.)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.