Есть ли ошибка в отсутствии атаки инъекции SQL? - PullRequest
0 голосов
/ 05 февраля 2012

Если мы используем лучший безопасный способ выполнения запроса, такого как подготовленный оператор или параметризованный запрос, для предотвращения атак с использованием SQL-инъекций, есть ли гарантия, что при его выполнении не возникнет ошибки базы данных?например, отправляя недопустимый параметр для данного типа при вставке записи, выведите ошибку вместо использования значения по умолчанию.Вы можете привести пример?

Ответы [ 3 ]

0 голосов
/ 05 февраля 2012

Нет, нет никакой гарантии, что какая-то ошибка времени выполнения (например, «триггер», если ничего больше не исчезнет).

0 голосов
/ 05 февраля 2012

Один пример, когда параметризованные запросы не предотвращают ошибки базы данных, пользователь может вводить данные так долго, что они не будут вписываться в тип базы данных, такой как эссе на 100 000 слов, в поле имени пользователя, ограниченное 50 символами.

Кроме того, параметризованные запросы не защитят от повторяющихся ошибок первичного ключа, если, скажем, имя пользователя, которое они запрашивают в форме регистрации, уже занято.

параметризованные запросы только гарантируют, что значения не интерпретируются как SQL, это не предотвратит любую другую форму ошибки (например, сбой оператора SQL из-за недостатка места в базе данных)

0 голосов
/ 05 февраля 2012

Это зависит от базы данных, которую вы используете, но, в общем, да, преобразования, которые происходят в зависимости от типов, часто бывают неявными, так что вы вполне можете передать строки, которые могут не работать во время выполнения, преобразовать в правильнуюvalue.

Что касается атак с использованием SQL-инъекций, если вы не ожидаете, что параметры содержат SQL, который вы затем вызываете динамически, вы в безопасности.

...