Он может быть показан с помощью обратной косой черты.
password = foo\' OR 1=1 --
становится:
password = foo\'' OR 1=1 --
запрос:
"SELECT COUNT(*) FROM UserAccounts
WHERE UserName = '{0}' AND Password = 'foo\'' OR 1=1 --'"
-
Это знак комментария в этом примере.
Решение предполагает, что программа только фильтрует (дублирует) апострофы.
Это действительно хорошая статья: http://unixwiz.net/techtips/sql-injection.html
См. "Поиск Имя таблицы ».
Что ж, я не вижу, как он уязвим. Итак, давайте поспорим о другой причине, по которой его нужно менять - это довольно неэффективно. В MSSQL (и, как мне кажется, в большинстве других высокопроизводительных SQL-серверов) запросы анализируются, разрабатывается план выполнения, а затем запрос и план сохраняются. Если точная
копия запроса запрашивается снова, используется сохраненный план выполнения. Параметр не влияет на это, поэтому, если вы используете параметры, он будет повторно использовать планы; если вы вставите текст, он никогда не будет.