Я хотел бы написать инструмент статического анализа кода для поиска уязвимостей SQLi в коде PHP. Обычно я просто использую скрипт для разделения функций и проверяю их на неадекватную очистку. Очевидно, что этот подход ограничен.
Схема программы, которую я хочу написать, такова:
- Найти все вызовы mysql_query
- Найдите все ссылки на функции, вызывающие mysql_query.
- Отслеживайте все переменные, которые входят в каждый вызов запроса, и выясняйте, выполняется ли для них mysql_real_escape_string.
Я застрял между двумя подходами к написанию этого. Либо я использую расширение PHP, либо пишу его как отдельное приложение с нуля.
Преимущество использования расширения PHP заключается в том, что мне не пришлось бы создавать собственный токенизатор, парсер и т. д. (полагаю, основываясь на возможностях расширения XDebug).
Кто-нибудь, у кого есть опыт написания расширений PHP, может посоветовать, как решить эту проблему?