Уважаемые пользователи Find-XSS.net, обращаем Ваше внимание на то, что с совершенствованием алгоритма XSS-сканера постепенно изменяется и смысл присваиваемых им статусов. Так, в начальных версиях сканера присутствовал статус Notice, предупреждавший пользователя о существовании возможной опасности. Несмотря на тот факт, что 50% случаев этим предупреждением можно было пренебречь, в последующих версиях сканер стал отслеживать все, что касалось этого статуса. Поэтому мы приняли решение упразднить Notice, оставив только статусы Error и Warning. В предлагаемой Вам обновленной версии (0.4.7) сканера и статус Error, и статус Warning означают наличие уязвимости. Разница между ними заключается лишь в том, что статус Error определяет конкретный тип уязвимости: XSS, SQL injection или же какой-нибудь другой активный код; а статус Warning означает, что во время проверки сканер обнаружил уязвимость SQL injection или XSS в теле функции, и Вам нужно проверить как параметры, получаемые этой функцией, в указанной строке кода, так и их использование в теле функции.
Согласны, на словах это выглядит немного сложно, но в реальности все гораздо проще. Давайте рассмотрим один пример:
1 function setnick($id, $nick) {
2 mysql_query("UPDATE users SET nick = '".$nick."' WHERE id = ".intval($id));
3 }
4
5 $id = $_GET['id'];
6 $nick = $_GET['nick'];
7
8 setnick($id, $nick);
После завершения сканирования данного кода Вы увидите в отчете следующее:
/file.php $nick
8: setnick($id, $nick); Warning
В этом случае сканер будет абсолютно прав, присвоив данный статус, поскольку в функции setnick() в строке 2 не экранируется параметр $nick, а это в свою очередь указывает на наличие SQL инъекции. В указанном случае злоумышленник применил довольно коварный способ, поэтому будьте особенно внимательны к местам, помеченным статусом Warning.
Немного о планах на будущее.
В следующих версиях мы планируем объединить статус Warning со статусом Error. В результате данного объединения статус Warning будет отменен. При этом отчет сканирования будет содержать историю полученного от пользователя параметра, что существенно упростит понимание присвоенного статуса. Например, в уже рассмотренном случае отчет проверки будет содержать примерно такие данные:
/file.php $_GET['nick']
6: $nick = $_GET['nick'];
/file.php $nick
8: setnick($id, $nick);
/file.php $nick
2: mysql_query("UPDATE users SET nick = '".$nick."' WHERE id = ".intval($id)); SQL injection
Отметим, что подобный подход к представлению отчета нам представляется наиболее логичным и правильным.
Дорогие друзья, если у Вас имеются какие-либо идеи или пожелания по дальнейшему совершенствованию XSS-сканера, Вы можете поделиться ими на нашем форуме. Напомним, что после завершения регистрация на Find-XSS.net пользователь также получить доступ и к аккаунту на форуме.
Желаем Вам поменьше проблем с безопасностью Ваших проектов!
С уважением, команда разработчиков Find-XSS.net.