Целостность Cookies против хакеров

Я пытаюсь разработать скрипт входа в PHP, который может запускать безопасный вход с помощью файлов cookie. Я знаю, что вы можете многое сделать с компьютерами, и я прошу сообщество предоставить информацию о безопасности файлов cookie. Мой самый большой вопрос: может ли кто-то создать cookie-файлы, подделав аккаунт и получить доступ к сайту без входа в систему? И какой самый безопасный способ проверить, является ли этот пользователь легитимным?

0

Решение

По моему мнению, использование cookie поверх сеанса является более безопасным, поскольку в своей основе идентификаторы сеанса также хранятся в cookie или в http-запросах, которые более подвержены перехвату сеансов. Обычно, в зависимости от требований, я делаю это, храня в одном файле cookie все идентификаторы пользователей. Что-то вроде: ID:PUBLIC_KEY:USER_DATA_SESSION_HASH_VERIFIER, Куда:

ID это идентификатор пользователя.

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

USER_DATA_SESSION_HASH_VERIFIER хеш, состоящий из идентификатора пользователя, пользовательского агента, текущего IP-адреса, открытого ключа, закрытого ключа, смешанный между солями (токенами), смешанный несколько раз md5 и sha1 с окончательным хешем sha1 или sha256.

Таким образом, используя ID а также PUBLIC_KEY Я выбираю пользователя и некоторые данные с ним, такие как закрытый ключ, регенерирую хэш и сопоставляю его с USER_DATA_SESSION_HASH_VERIFIER, имейте в виду, что наличие текущего ip в хэше приведет к выходу пользователей с динамическим ip, если они перезапустят там интернет-соединение, у которого будет новый IP-адрес. Смешивание пользовательского агента в хеше не позволит другим пользователям использовать ваши куки в разных браузерах.

Теперь, если вы ищете что-то вроде управления сеансом для пользователей, таких как Facebook, вы можете смешать там идентификатор сеанса и сохранить идентификатор сеанса с вашим уникальным открытым ключом для этого сеанса в базе данных.

ех. 1:Asdfg: uss32: sha1_hash 1: GGGAS:2312: SHA1_HASH. таким образом, вы не можете использовать Asdfg ключ для сессии 2312.

Могут быть и другие лучшие практики, но для меня сейчас это кажется очень хорошим решением.

0

Другие решения

Файлы cookie хранятся в браузере, поэтому они могут создавать файлы cookie. То, что вы обычно делаете для предотвращения этого, — это установка файла cookie для user idеще один для session hash (что-то, что вы генерировали случайно, когда пользователь вошел в систему) и проверьте IP-адрес сеанса.

1