Intereting Posts
Пытается использовать PHP DateTime Class с Yii2, получившим класс не найденных ошибок часовой пояс с обработкой DST PHP VIEW файлы в каталоге с pagination – php Как изменить заголовок HTTP SOAPAction для \ SoapClient? Получать все вставленные идентификаторы при вставке нескольких строк с использованием одного запроса PHP изменяет размер изображения пропорционально максимальной ширине или весу jQuery DataTables: Uncaught TypeError: невозможно прочитать свойство «mData» неопределенного Удаление предупреждающих сообщений в PHP Как преобразовать записи в таблицу в xml-формат в PHP? Загрузка файла, хотя AJAX POST MailChimp API PHP – Добавить в группу интересов Загрузите другой файл JavaScript в соответствии с языком PHPExcel Записывает нежелательные символы при запуске кода на AWS. Получение всех записей, которые являются днем ​​рождения, сегодня в PostgreSQL Как проверить, пусто ли значение массива?

Отключить выполнение Javascript на определенных страницах (HTML / PHP)

есть ли HTTP-заголовок для отключения Javascript для конкретной страницы? Мой веб-сайт предоставляет созданный пользователем HTML-контент (поэтому я не могу просто использовать htmlenitities ), и я хотел бы предотвратить создание сценариев (JavaScript-инъекций).

Я уже использую HttpOnly-cookie для аутентификации только в основном домене, тогда как пользовательский контент отображается только на поддоменах, где cookie не может быть прочитан. Проблема в том, что все еще существует слишком много возможностей для выполнения JavaScript – например, используя атрибуты событий, onclick как onclick и Internet Explorer имеет даже свойство в CSS, чтобы разрешить выполнение JavaScript ( expression ), о котором я никогда не слышал раньше. Еще одна интересная идея, которую я прочитал, заключалась в том, чтобы выбросить исключение, чтобы заблокировать следующий код. Еще одна идея заключалась бы в определении списка, содержащего все допустимые теги и, кроме того, массив с каждым именем разрешенного атрибута, но это очень тяжелая работа, и я думаю, что это не будет охватывать все возможные инъекции.

Я предполагаю, что я не единственный человек, у которого есть эта проблема, так что кто-нибудь знает о возможности использования всего возможного вредоносного кода – по крайней мере, в современных браузерах?

Простой мнимый заголовок, похожий на X-Scripting: disabled , сделает жизнь намного проще!

Да, есть экспериментальный HTTP-заголовок, называемый политикой безопасности контента, который позволяет вам контролировать, откуда приходит JavaScript, что делает невозможным XSS. Однако в настоящее время он поддерживается только Chrome и Firefox.

Рекомендуется включить HttpOnly-cookies, однако это предотвратит точно атаки ZERO . Вы все еще можете использовать XSS, читая токены CSRF и выполняя запросы с XHR .

Существует много способов получить XSS, а сканер уязвимостей, такой как ShieldSeal , найдет (почти) все из них. Skipfish – это сканер уязвимостей с открытым исходным кодом, который очень примитивен, но свободен. Таким образом, большинство веб-приложений имеют дело с широко распространенными уязвимостями. (Я работаю в SheildSeal, и я помогаю создавать свой сканер уязвимостей, и мне нравится моя работа.)

Когда проблема обнаружена, вы должны использовать htmlspecialchars($var) или htmlspecialchars($var,ENT_QUOTES) для дезинфекции ввода. ENT_QUOTES может запретить злоумышленнику вводить событие onclick или другое событие JavaScript.