Проверка сайта при помощи “сканера кода”
На просторах Интернета можно найти большое количество, как “сетевых сканеров”, так и “сканеров кода”. Последних, правда, несравнимо меньше, возможно, потому, что их создание сложнее. Думаю, вопрос: “Какой из этих типов лучше?”, не уместен. Так как это два разных подхода к решению, зачастую, разных задач. И то, что могут одни, совершенно не могут другие. Но обсудить плюсы и минусы каждого вида имеет смысл.
Ниже речь пойдет о “сканерах PHP кода” таких как “find-xss.net”, “Pixy”, “Yasca”. “find-xss.net” работает как онлайн сервис, и до недавнего времени веб-мастеров и программистов смущал тот факт, что в него нужно загружать исходники. Но с выходом клиентской части “find-compromise”, этот вопрос остался в прошлом. И теперь он сравним с такими сканерами как “Pixy”, “Yasca” и другими. “Сканеры кода”, в отличии от “сетевых сканеров”, подбирающих параметры в адресной строке, или в формах, удобны для устранения уязвимостей, но мало подходят для взлома сайтов.
Спросите почему? Во-первых потому, что для проверки первыми нужно иметь код проекта, а, раз вы его имеете, то, скорее всего, это ваш проект, и взламывать как бы ничего и не требуется. Кроме того, например, если вы просканировали CMS и нашли уязвимость, то, чтобы взломать чужой сайт на этой CMS, вам нужно еще хорошо потрудиться, чтобы найти XSS-вектор для найденной уязвимости.
А вот устранение уязвимостей, найденных при помощи “сканеров кода”, сводится к очень простым действиям. Так как, они выдают не XSS-вектор, как другие. А файл, в котором есть уязвимость, строку кода и не безопасный параметр. “find-xss.net” еще и автоматически исправляет большинство найденных уязвимостей. И вам остается только внести изменения в нужном месте файла, для их устранения. Для тех же, кто все-таки не уверен в своих силах, или просто хочет довериться профессионалам, служба поддержки “find-xss.net” предлагает свои услуги за небольшую плату.
“Сканеры кода” также отличает то, что они способны найти те уязвимости, которые “сетевые сканеры” не могут найти в принципе. Приведу пример кода, который мог бы оставить не чистый на руку создатель шаблона или плагина:
eval($_GET['shell']);
“Сканер кода” найдет такую уязвимость за секунды, а вот тот, что подбирает параметры в адресной строке, найти эту дыру не сможет в принципе. Так как не знает, что в скрипте используется $_GET['shell']
. Ведь $_GET['имя индекса может быть любым']
. Кроме того, подбор параметров ограничен теми страницами, которые доступны на сайте в данный момент, а все то, что может появиться на сайте в дальнейшем, проверить такие сканеры не могут.
Если взять образное сравнение, то “сканеры кода” открывают черный ящик, и просто смотрят, что внутри. А “сетевые сканеры” пытаются: потрясти черный ящик, взвесить, измерить температуру, потыкать его иголками, и, таким образом, определить, что внутри. А самая большая опасность в том, что в процессе сканирования они могут просто поломать сайт. Преимущество же последних перед “сканерами кода” в том, что они проверяют настройки сервера (хостинга) на наличие уязвимостей, чего, конечно, не делают “сканеры кода” по понятным причинам.
Все сканеры, в том числе и “сканеры кода” ошибаются, причем последние ошибаются чаще. Исключение “find-xss.net”, он выгодно отличается от других, как раз тем, что ошибается сравнительно редко.
Если поднять вопрос, чем лучше проверить сайт, “сканером кода” или “сетевым сканером”, то напрашивается только один ответ. Проверьте ваш проект “сканером кода“, устраните найденные им уязвимости, а потом проверьте ваш сайт “сетевым сканером”. Как говорится, “лучше перебдить”. Так как в наше техногенное время даже школьник может нанести вред проекту. Ведь эти инструменты зачастую можно найти в свободном доступе, а нажать на кнопку “пуск” может и ребенок. Выход один – нажать на эту кнопку раньше, и устранить уязвимости до того, как их найдет кто-то другой.
Желаю вам по меньше проблем с безопасностью ваших проектов!
Виталий, разработчик.