Здесь нет серебряной пули.Инъекции SQL могут встречаться во многих скрытых формах и пытаться обнаружить их с помощью регулярных выражений или другой формы в брандмауэре, или приложение может защитить вас от самых простых форм внедрения SQL, но опытный хакер просто справится.Как уже отмечал AdaTheDev, автоматизированные инструменты для проверки вашего кода, такие как MS Code Analysis Tool, могут дать вам толчок, но опять-таки серебряной пули нет.Вам нужно будет пройти через все ваше заявление.
Когда это большая работа, вы должны составить план.Прежде всего, составьте руководство, в котором говорится, как можно смягчить атаки такого типа.Также постарайтесь разделить ваше приложение на части, от очень критических до менее критичных.Таким образом, вы сможете лучше оценить затраты на исправление ошибок и позволить руководству решить, сколько это может стоить и, следовательно, какой риск они готовы взять на себя.Части вашего приложения, к которым могут получить доступ неаутентифицированные пользователи, являются наиболее важными.Если каждый (в мире) может создать учетную запись в вашем приложении, все функции, к которым имеют доступ эти пользователи, крайне важны.Чем меньше население и чем больше вы доверяете этим пользователям, тем меньше риск.Возможно, вам удастся исправить эти детали позже.Но никогда не стоит недооценивать хорошего хакера.Возможно, он / она сможет скомпрометировать учетную запись пользователя с высокими привилегиями и начать тестировать возможности внедрения SQL с использованием этой учетной записи.
Всегда старайтесь использовать стратегию глубокой защиты, иметь несколько (или много) уровнейобороны.Например, никогда не подключайтесь к вашей базе данных как SA из вашего приложения.Создайте учетную запись только с необходимыми привилегиями и, возможно, даже создайте несколько учетных записей SQL, по одной учетной записи на роль (или на группу ролей).Ограничение прав доступа к базе данных очень помогает в уменьшении риска, опять же, не ставьте на это как на единый уровень защиты. В этой статье, например, , объясняется, как хакер может использовать учетную запись с более низкими привилегиями, когда она может выполнить SQL-инъекцию.
Замечательно, что вы задаете этот вопрос здесь, потому что я виделмногие разработчики в прошлом, которые просто не хотят знать, что очень страшно, потому что бизнес часто доверяет своим разработчикам (что тоже страшно).
Я желаю вам удачи.