Как этот SQL-запрос может кодировать быть поврежденным/использованным вводом данных пользователем? [дубликат]

8
задан Community 23 May 2017 в 12:11
поделиться

3 ответа

Он может быть показан с помощью обратной косой черты.

password = foo\' OR 1=1 --

становится:

password = foo\'' OR 1=1 --

запрос:

"SELECT COUNT(*) FROM UserAccounts
                WHERE UserName = '{0}' AND Password = 'foo\'' OR 1=1 --'"

- Это знак комментария в этом примере.

Решение предполагает, что программа только фильтрует (дублирует) апострофы.

3
ответ дан 6 December 2019 в 00:06
поделиться

Это действительно хорошая статья: http://unixwiz.net/techtips/sql-injection.html

См. "Поиск Имя таблицы ».

1
ответ дан 6 December 2019 в 00:06
поделиться

Что ж, я не вижу, как он уязвим. Итак, давайте поспорим о другой причине, по которой его нужно менять - это довольно неэффективно. В MSSQL (и, как мне кажется, в большинстве других высокопроизводительных SQL-серверов) запросы анализируются, разрабатывается план выполнения, а затем запрос и план сохраняются. Если точная копия запроса запрашивается снова, используется сохраненный план выполнения. Параметр не влияет на это, поэтому, если вы используете параметры, он будет повторно использовать планы; если вы вставите текст, он никогда не будет.

0
ответ дан 6 December 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: