Cross Site Scripting (XSS): Нужно ли мне избегать амперсанда?

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

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

Ура!

Ответ 1

Вы действительно должны взглянуть на листинг Chevrolet 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

Ответ 2

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

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

http://mybank.com/page?message= < script src= "evil _script.js" /" >