Как должны выглядеть аутентичные куки? - PullRequest
0 голосов
/ 24 ноября 2011

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

Вот несколько примеров из реального мира:

site: stackoverflow.com
name: usr
content: t=Q7k6OGJUK39E&s=f3RhRndgkeiv

site: vimeo.com
name: uid
content: 1186974%7Cuser1186974%7C1232475869%1C0

site: github.com
name: gh_sess_
content: BAh7CjoQZmluZ2VycHJpbnQiJWZlYzdmNWFhNjJmYjJhNDg6OTJkYWQzMjdmMjRiYWY5Ogl1c2VyaQNqzwI6DGNvbnRleHQiBi86D3Nlc3Npb25faWQiJWE1MjU0MDRiNTk0YmZmMzczMHJhNDkzMGYyHzkyBmJiIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--e9d4def787b537f1bbacdb7d625fc06361fbe46a

1 Ответ

1 голос
/ 24 ноября 2011

Основой является сохранение как минимум двух данных в файле cookie для идентификации пользователя:

  • Что-то, говорящее вам, кто это (обычно идентификатор пользователя)
  • Что-то говорит вам, что это действительно этот пользователь (тип вызова против идентификатора пользователя)

Давайте создадим хеш пользователя для идентификатора пользователя John # 42. Логин Джона - "john_demo" На вашем сайте будет секретная соль, просто случайная строка, предотвращающая подделку хеша.

<?php
$login = "john_demo";
$id = 42;
$salt = "ùoajamen!k);p67!è§çRIUV";
$hash = sha1(sha1("$id:$login:$salt").$salt);
$cookie_value = base64_encode($id.':'.$hash);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...