Межсайтовый скриптинг (XSS): нужно ли мне выходить из амперсанда? - PullRequest
10 голосов
/ 03 февраля 2012

Я хочу скрыться за XSS в контексте HTML, и до сих пор я обрабатываю символы <, > и ". По-видимому, рекомендуется также избегать амперсанда, но почему? (За исключением того, что HTML-код должен быть действительным, давайте предположим, что это не проблема)

Итак, я спрашиваю: Когда я избегаю <, > и ", кто-нибудь может продемонстрировать, как амперсанд все еще может разрешить XSS-атаку в контексте HTML?

Ура!

Ответы [ 2 ]

6 голосов
/ 04 февраля 2012

Вы действительно должны взглянуть на Шпаргалку по профилактике OWASP XSS.

Ты должен сбежать, потому что это может быть использовано для обхода других защит. Рассмотрим этот код:

<button onclick="confirm('Do you really want to delete <%= data_from_user; %> ?'">Delete</button>

Чтобы защититься от XSS в обработчике событий onclick, разработчик экранирует ', ", <и> в data_from_user и думает, что все в порядке. Проблема в том, что если злоумышленник наберет &#39;, который пройдет через экранирование, но завершится разрешить злоумышленнику запустить JavaScript.

Пример здесь: http://erlend.oftedal.no/blog/?blogid=124

0 голосов
/ 03 февраля 2012

вы используете & для объединения параметров в URL:

Отраженный XXS :
Код сценария вставляется в URL, который веб-страница отображает для жертв

http://mybank.com/page?message=

...