Есть ли способ предотвратить использование куки на другом компьютере? - PullRequest
1 голос
/ 17 апреля 2011

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

Ответы [ 4 ]

1 голос
/ 17 апреля 2011

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

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

0 голосов
/ 22 апреля 2011

Вы не должны помещать информацию об аутентификации в сам файл cookie.При настройке файла cookie вы должны создать сеанс, привязанный к некоторому постоянному хранилищу (sql / nosql).

Это в основном какой-то уникальный случайно сгенерированный идентификатор, который сопоставляется с другой информацией.Случайно сгенерированный идентификатор отправляется в виде куки.При последующих запросах вы читаете cookie и пытаетесь получить от него учетную запись.

Вы можете наложить ограничения на сеанс, к которым он может быть доступен только с IP-адреса, которому вы его присвоили.Вы также можете привязать его к пользовательскому агенту (хотя это безопасность по неясности, пользовательские агенты могут быть настроены).

0 голосов
/ 17 апреля 2011

Вы можете зашифровать информацию с помощью надежного, общедоступного, хорошо известного алгоритма.Затем, если cookie будет скопирован, получатель не сможет получить от него какую-либо информацию.

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

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

0 голосов
/ 17 апреля 2011

Нет, вы НИКОГДА не должны ставить конфиденциальную дату в куки.

Для аутентификации вы должны использовать сеансы.

http://www.tizag.com/phpT/phpsessions.php

...