Обеспечивает ли https соединение безопасные файлы cookie и предотвращает атаки XSS. У меня есть простой блог, который позволяет пользователям вводить код JavaScript в качестве ввода. Я хочу, чтобы Javascript вводил пользователя, все еще предотвращая атаки XSS и кражу файлов cookie. Помогает ли https защищать файлы cookie. Я только нашел несколько сайтов, которые говорят об этом и все еще немного неясны.
Защищает ли https cookie атаки XSS?
Ответ 1
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 для проверки подлинности. Я могу привести пример, если вы заинтересованы.
Ответ 2
Протокол HTTP (HTTPS или HTTP) не помогает с XSS или действительно имеет какое-либо отношение. Вам нужно будет добавить предупредительные меры и будьте осторожны, когда вы выведете javascript для клиента.
Ответ 3
Как только вы позволили кому-то динамически хранить и выполнять произвольный JavaScript на вашем сайте, у них есть доступ к множеству вещей, которые вы хотели бы оставить в одиночку. Как минимум, они могут захватить ваш идентификатор сеанса PHP (в конце концов, у них будет доступ к вашим файлам cookie), а затем использовать Ajax для пересылки на какой-либо удаленный сервер. Как только у них это получится, они смогут делать всевозможные дерьмо вашим пользователям.
Если вы должны позволить им добавить свой собственный JavaScript, я бы рекомендовал вам полностью отключить всю функциональность Ajax (XMLHTTPRequest = function(){}
предотвращает все Ajax довольно легко в большинстве браузеров, но вам может потребоваться изучить, что нужно IE (я не знаю, что сделает ActiveXObject = function(){}
...)). К сожалению, вы не можете запретить доступ к файлам cookie, если у вас есть ожидание их использования (т.е. Если у вас есть сеанс), поэтому вам нужно будет найти другое обходное решение.
Ответ 4
Если вы хотите, чтобы пользователи могли вводить код JavaScript, но не анализировали его, запустите его через htmlspecialchars. Если вы хотите, чтобы они могли выполнять код, то нет, HTTPS не поможет, и вам понадобится проанализировать код и удалить из него что-нибудь плохое.