Игнорирование базового тега после записи
На Chrome я получаю ошибку Refused to execute a JavaScript script. Source code of script found within request.
после публикации данных, которые содержат имя домена (также обратите внимание на отсутствие javascript на любой странице) .
<form action="/badpage2.html" method="post">
<input type="hidden" name="name" value="href=%22http://www.w3.org/%22"/>
<input type="submit" name="submit"/>
</form>
<!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" );