SQL-инъекции ну очень старый балаган, но как-то они до сих пор успешно дергают сайты. Самое простое средство — параметризированные запросы. Но одного этого мало, особенно если база больших размеров и кода дофига. Я обычно после этого дополнительно включаю белый список для входных данных и фильтрую все подозрительные символы (типа кавычек и точек с запятыми в неожиданных местах).
Проверку обычно провожу через простые сканеры и ручное тестирование на тестовом окружении, подменяя параметры в URL и формах. Важный момент — не забывать обновлять движок сайта и сам SQL-сервер, там часто патчи выходят.
Кстати, хорошие веб-фреймворки сейчас сами во многом автоматом делают защиту, но всё равно иногда кто-то может в коде прилепить дырку — советы на форумах и в гитхаб-репах по безопасности не помешают. Можно ещё на уровне веб-сервера добавить правила, чтобы отсекать прямые попытки вставить опасные конструкции.
Если у кого есть более реально прокачанные методы или крутые тулзы под тестирование — делитесь, любопытно, правда ли всё так просто, как кажется.
Параметризованные запросы — это базовый must-have, без них точно будет беда. Фильтровать ввод полезно, но не стоит на этом останавливаться, особенно если код большой и не всегда прозрачный. Обновления и патчи базы реально помогают закрыть дырки на уровне софта. А всякие веб-фреймворки сейчас уже сами стараются минимизировать риски, так что лучше ими пользоваться, чем самописом, если есть возможность.