Как защитить от закодированного URL-адреса XSS Attack - PullRequest
0 голосов
/ 08 марта 2020

Я получил следующие 2 вопроса:

1) Как защититься от такого рода атак XSS?

https://www.example.com/index.php?&#0000106 avascript: alert ( 'XSS')

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

<img src=x onload="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">

//And browser treats as
<img src=x onload="javascript:alert('XSS')">

Я уже использую PHP 's htmlspecialchars() и Filtar_var() с URL Sanitization, но этот вид кодированного XSS легко пройдет через эти функции

Как мы можем защитить такой кодированный XSS или нейтрализовать любую такую ​​атаку?

2) Необходимо ли встраивать XSS-атаку в HTML Page, Javascript или CSS et c для запуска? или может быть способ, где XSS не нужно встраивать?

1 Ответ

1 голос
/ 08 марта 2020

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

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

Ваша проблема не имеет ничего общего с тем фактом, что атака закодирована. Проблема в том, что пользователь вводит куда-то, что ожидается JavaScript (и атрибут onload), поэтому уже обрабатывается как JavaScript.

json_encode обычное решение здесь (и затем htmlspecialchars, поскольку JavaScript находится внутри атрибута HTML).

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

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

...