Chrome ERR_BLOCKED_BY_XSS_AUDITOR PHP-решение для предотвращения обнаружения межсайтовых скриптов Bogus - Безопасный блог парсера и фильтра пакетов HTML онлайн урок.


Содержание

Что такое XSS Security Exploit?

Ошибка отправки формы Chrome ERR_BLOCKED_BY_XSS_AUDITOR

Использование заголовка X-XSS-защиты как временного обходного пути, чтобы избежать ошибки блока ERR_BLOCKED_BY_XSS_AUDITOR

Сделать безопасным путем фильтрации вредоносного HTML на стороне сервера с помощью PHP

Загрузите пакет Secure HTML Filter и Parser PHP Class


Что такое XSS Security Exploit?

XSS - это аббревиатура Cross-Site Scripting. Это атака безопасности, которая заключается в отправке HTML с вредоносным JavaScript на сайт.

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

Ошибка отправки формы Chrome ERR_BLOCKED_BY_XSS_AUDITOR

Браузер Chrome (и Chromium) имеет функцию аудита безопасности XSS, которая анализирует HTML, отправленный через значения формы, и блокирует эти запросы XSS, поэтому формы никогда не отправляются, и в результате исключений XSS избегают,

Проблема заключается в том, что с версии Chrome 57 она начала блокировать формы отправки POST с определенными структурами HTML. Таким образом, отображается сообщение об ошибке с именем ERR_BLOCKED_BY_XSS_AUDITOR, и форма вообще не отправляется.

Функция аудита XSS для Chrome - хорошая идея, поскольку она защищает пользователей от использования их учетных записей на определенных сайтах.

Проблема заключается в том, что этот аудитор не очень надежен в версии Chrome 57. Есть некоторые случаи, когда он блокирует отправку HTML-кода, который не содержит вредоносного JavaScript или вообще никакого JavaScript.

Этот случай, когда сайт использует HTML-редактор содержимого. На самом деле редакторы HTML-контента являются частями HTML-страниц с атрибутом contenteditable.

& lt; div contenteditable = "true" & gt; Некоторые HTML идут здесь & lt; DIV & GT;

Этот атрибут говорит браузеру, что использование может вводить в него содержимое, например, путем ввода текста или вставки части страницы там. Затем некоторый код JavaScript на странице извлекает отредактированный HTML и помещает его в скрытый ввод формы, поэтому он может быть отправлен на сервер при отправке формы.

Обычно редакторы HTML отображают области редактирования внутри iframe, поэтому операции выбора, вырезания, копирования и вставки содержатся внутри iframe. Затем некоторый код JavaScript вытаскивает отредактированный HTML из iframe в скрытый ввод формы.

Проблема возникает с Chrome 57, по-видимому, потому, что он обнаруживает, что HTML, выведенный из контентного элемента, является небезопасным, даже если он не содержит кода JavaScript.

Трудно определить, что именно HTML-код, который обнаруживается как злонамеренный, потому что проблема не возникает при редактировании всех видов HTML-кода.

Использование заголовка X-XSS-защиты как временного обходного пути для предотвращения ошибки ERR_BLOCKED_BY_XSS_AUDITOR

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

Проблема была сообщена

команде Google Chrome

, но она не была исправлена. Даже не ясно, исправят ли они будущие версии Chrome. Один временный обходной путь до тех пор, пока Chrome не перестанет фильтровать отправку формы с помощью HTML, чтобы использовать заголовок X-XSS-Protection. Вы можете установить этот заголовок перед отправкой текущей страницы HTML в браузер в PHP следующим образом:

Заголовок («X-XSS-Protection: 0»);

Имейте в виду, что защита XSS является хорошей вещью, когда она работает, и не блокирует безопасный HTML. Поэтому рекомендуется использовать этот заголовок только в том случае, если Chrome блокирует отправку HTML в текущих версиях.

Сделать безопаснее путем фильтрации вредоносного HTML на Сторона сервера с использованием PHP

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

Одним из способов правильной фильтрации является использование полного парсера HTML, который отбросит неверный HTML-код и фильтр небезопасного JavaScript. Это одна из возможностей

Защищенный анализатор HTML и пакет фильтрации

. Это модульный анализатор разметки, который анализирует HTML, игнорирует искаженные HTML-теги и текстовые последовательности. Он предоставляет несколько классов модулей, которые могут быть скованы для выполнения различных операций фильтрации.

Он использует белый список, чтобы определить, какие атрибуты HTML-тегов и атрибуты стиля CSS безопасны. Таким образом JavaScript-код и любые неизвестные атрибуты тегов или свойства CSS и игнорируются.

Пакет может переписать HTML как результат операции фильтрации HTML, как вы можете видеть, используя следующий пример сценария.

$ html
='некоторый код HTML здесь;

$ filter
= новыйmarkup_filter_safe_html_class;

* Добавьте здесь собственные свойства CSS, которые вы знаете, которые
* безопасны для разрешения.*


$ filter
- & gt;safe_proprietary_css_properties= массив (
'-moz-border-radius'
= & gt; array (),
'-moz-border-radius-topleft'
= & gt; array (),
'-moz-border-radius-topright'
= & gt; array (),
'-moz-border-radius-bottomleft'
= & gt; array (),
'-moz -border-radius-bottomright '
= & gt; array (),
' -webkit-border-radius '
= & gt; array (),
' -webkit-border-top-left-radius '
= & gt; array (),
' -webkit-border-top-right-radius '
= & gt; array (),
' -webkit-border-bottom-left-radius '
= & gt; array (),
'-webkit-border-bottom-right-radius'
= & gt; array (),);


* Добавьте сюда свойства свойств имен свойств CSS, которые вы знаете
*, которые можно безопасно разрешить.*


$ filter
- & gt;safe_css_property_functions= массив (
'alpha'
= & gt; array ());


$ parameters
= array (
'Data'
= & gt;$ html,
* Установите значение 1, если хотите отфильтровать HTML, который содержит только тело
части page *

'OnlyBody'
= & gt;0,
);


if ((
$ success=$ filter- & gt;StartParsing($ parameters))){

$ output
='';do{
if (! (

$ success
=$ filter- & gt;Анализ($ end,$ элементов)))break;

$ te
=count($ elements);для (
$ e
=0;$ e$ te; ++$ e){

, если (! ($ success=$ filter- & gt;RewriteElement($ элементов[$ e],$ markup)))break;

$ output. =$ markup;}
}
while (!
$ end);if (
$ success)
$ success=$ filter- & gt;FinishParsing();if (
$ success)echo
$ output;}

Загрузите пакет Secure HTML Filter и Parser PHP Class

Вы можете загрузить и установить защищенный HTML-фильтр и пакет парсера

ZIP-архив или установить его с помощью инструмента PHP-композитора, используя инструкции из пакета загрузите страницу .

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