Игнорирование базового тега после записи

На Chrome я получаю ошибку Refused to execute a JavaScript script. Source code of script found within request. после публикации данных, которые содержат имя домена (также обратите внимание на отсутствие javascript на любой странице) .

badpage1.html:

<form action="/badpage2.html" method="post">
<input type="hidden" name="name" value="href=%22http://www.w3.org/%22"/>
<input type="submit" name="submit"/>
</form>

badpage2.html:

<!DOCTYPE html>
<html>
    <head>
        <base href="http://www.w3.org/"/>
    </head>
    <body>
        <img src="Icons/w3c_home" alt="">
    </body>
</html>

Если вы идете прямо к badpage2.html изображение покажет, но если вы перейдете к нему через badpage1.html, изображение не будет отображаться (базовый тег не работает) .

Это ошибка в обнаружении Chrome XSS? И если это не так, как бы я обойти это? Кажется глупым кодировать опубликованные данные, чтобы обойти этот фильтр.

РЕДАКТИРОВАТЬ:

В моем случае отправленное значение сообщения должно обновить часть содержимого страницы. Проблема возникает, если она содержит доменное имя, которое используется в <base> (как в этом примере) будет запускать обнаружение XSS, которое отключает <base> тег.

1 ответ

Решение

Я узнал, что я могу отправить пользовательский заголовок HTTP X-XSS-Protection на странице, которая запуталась из-за защиты.

Я использую приведенный ниже код для моего решения PHP:

header( "X-XSS-Protection: 0" );
Другие вопросы по тегам