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

У меня есть класс, который имеет функцию, скажем, class.php:

class fun {
public function get_cookie() {
$old_cookie = $_COOKIE['mycookie'];
}
public function ssl() {
//redirect from http to https
}

В другом php-файле, скажем, index.php:

//include fun class
$fun = new fun;
$fun->ssl();
$fun->get_cookie();

У меня такой вопрос, поскольку функция get_cookie после $ fun-> ssl () отправляет ли файл cookie в зашифрованном виде? или поскольку код файла cookie кодируется до выполнения $ fun-> ssl (), файл cookie отправляется в незашифрованном виде?

Ответы [ 3 ]

3 голосов
/ 27 сентября 2011

Никогда не отправляйте ничего через куки, которые требуют шифрования.

Независимо от ответа на поставленный здесь вопрос, содержимое ваших файлов cookie следует считать общедоступным и небезопасным.

Во-первых, весь набор файлов cookie для сайта отправляется (в обе стороны) с каждым веб-запросом. Таким образом, даже если вы успешно зашифровали их с помощью SSL в этом конкретном запросе, пользователю потребуется только сделать простой HTTP-запрос для изображения на вашем сайте, и он передаст их и вернет их в незашифрованном виде.

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

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

1 голос
/ 27 сентября 2011

Файл cookie отправляется до запуска вашего кода.PHP читает заголовок, заполняет глобальную переменную $ _COOKIE [] и затем выполняет ваш код.Поэтому, если кто-то отправит запрос по HTTP, он получит cookie в незашифрованном виде.

Когда вы создаете cookie, вы можете определить, что cookie отправляется только на страницы, запрошенные с помощью HTTPS.Это делается с помощью функций session_set_cookie_params() или setcookie() с параметром $secure.Такие куки не будут отправлены, если страница запрашивается по HTTP.

1 голос
/ 27 сентября 2011

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

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