Безопасные куки https предотвращают атаки XSS? - PullRequest
10 голосов
/ 30 июня 2011

Защищает ли соединение https файлы cookie и предотвращает атаки XSS. У меня есть простой блог, который позволяет пользователям вводить код JavaScript в качестве ввода. Я хочу разрешить ввод Javascript пользователем, в то же время предотвращая атаки XSS и кражу файлов cookie. Помогает ли https защитить куки? Я нашел только несколько сайтов, которые говорят об этом, и все еще немного неясно.

Ответы [ 4 ]

7 голосов
/ 30 июня 2011

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

Чтобы гарантировать, что cookie сеанса отправляется только по HTTPS-соединениям, вы можете использовать функцию session_set_cookie_params () перед началом сеанса:

session_set_cookie_params(0, '/', '', true, true);
session_start();

Обратите внимание на первое true, это означает, что cookie будет отправляться только на страницы HTTPS. Второй true сообщает браузеру, что JavaScript не должен получать доступ к куки-файлу сеанса, это зависит от браузера, если это сделано правильно.

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

4 голосов
/ 30 июня 2011

Протокол HTTP (HTTPS или HTTP) не помогает с XSS или действительно не имеет никакого отношения. Вам нужно будет добавить превентивные меры и быть осторожным, когда вы выводите JavaScript клиенту.

1 голос
/ 30 июня 2011

Если вы хотите, чтобы пользователи могли вводить код JavaScript , но не анализировать его, запустите его через htmlspecialchars. Если вы хотите, чтобы они могли выполнять код, то нет, HTTPS не поможет, и вам нужно будет проанализировать код и удалить из него все плохое.

1 голос
/ 30 июня 2011

После того, как вы позволили кому-то динамически хранить и исполнять произвольный JavaScript на вашем сайте, он получает доступ ко многим вещам, которые вы бы хотели оставить в покое.Как минимум, они могут захватить ваш идентификатор сеанса PHP (в конце концов, у них будет доступ к вашим файлам cookie), а затем использовать Ajax для пересылки его на какой-нибудь удаленный сервер.Как только они получат это, они могут делать всякие дерьмо для ваших пользователей.

Если у вас есть , чтобы позволить им добавить свой собственный JavaScript, я бы рекомендовал вам специально отключить все функции Ajax(XMLHTTPRequest = function(){} довольно легко предотвращает все Ajax в большинстве браузеров, но вам, возможно, придется посмотреть, что нужно IE (я не знаю, что сделает ActiveXObject = function(){} ...)).К сожалению, вы не можете запретить доступ к файлам cookie, если вы ожидаете их использования (например, если у вас есть сеанс), поэтому вам нужно будет найти какой-то другой обходной путь.

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