Проверяет ли sqlCommand.Parameters.Add (sqlParam) резервные слова, такие как «Таблица», «Падение» и т. Д. В основном я хочу знать, используя выше, как мы можем избежать Sql Injection, что такое механизм там.Parameters.Add и Sql Injection
ответ
Все зависит от того, что вы планируете делать с параметрами SQL, которые вы выполняете. Хорошая вещь об использовании .Parameters.Add() заключается в том, что значения передаются отдельно, а не часть 1 большого куска-о-sql. Конечно, вам решать, что с ними делать.
Предполагая, что вы делаете что-то вроде этого:
SELECT * FROM myTable WHERE customer_nr = @customer_nr
Тогда это на самом деле не имеет значения, если «хакер» прошло что-то вдоль линий ';DROP TABLE myTable --
. Запрос будет просто ничего не вернуть, потому что ни один клиент не называется `«; DROP TABLE MyTable -»
Однако, если вы собираетесь использовать его как это:
SELECT @sql = 'SELECT * FROM myTable WHERE customer_nr = ''' + @customer_nr + ''''
EXEC (@sql)
то поражение цели системы, и хакер сможет выполнить некоторые SQL-инъекции.
В качестве резервных слов он не обрабатывает параметры. Использование параметризованных хранимых процедур - лучший способ избежать внедрения sql.
Спасибо за ваш ответ, пожалуйста, предоставьте мне ссылку, где он заявляет, что заполнители не помогут предотвратить SQL-инъекцию. – aads
О ... Я уверен, что могу придумать параметризованную хранимую процедуру, уязвимую для атаки SQL Injection Attack. :) –
- 1. Parameters.Add в SQL проекта C#
- 2. разница с Parameters.Add и Parameters.AddWithValue
- 3. разница между Parameters.Add и Parameters.AddWithValue
- 4. PHP и SQL Injection
- 5. Параметры.AddWithValue vs Parameters.Add?
- 6. AddWithValue sql injection safe? Зачем?
- 7. CFWheels ORM и SQL Injection
- 8. Rails scope и sql injection
- 9. C# string и sql injection
- 10. Параметры и SQL Injection asp.net
- 11. SQL Injection и возможные атаки
- 12. Erlang и SQL Injection Attacks
- 13. SQL Injection и два запроса
- 14. Doctrine2 FindOneBy и SQL Injection
- 15. sqlalchemy filters и sql injection
- 16. ActiveRecord :: Base.connection.select_all и sql injection
- 17. Ошибка синтаксиса SQL (SQL injection)
- 18. SQL Injection, способ комментирования
- 19. SQL injection test - mysql_query
- 20. Entity Framework + sql injection
- 21. SQL Injection in Disguise
- 22. Уязвимости SQL Injection
- 23. SQL injection on INSERT
- 24. SQL Injection attack asp.net
- 25. SQL Injection: ошибка синтаксиса
- 26. рельсы find_by SQL Injection
- 27. SQL Injection Профилактика - GET_VARS
- 28. причина sql injection
- 29. SQL Injection cshtml
- 30. Hibernate SQL Injection
Вы действительно должны прочитать статью, посвященную Bobby Tables (http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic- work? rq = 1), он объясняет вещи намного лучше и ссылается на многие другие связанные данные. – deroby
Итак, это подразумевает: .Parameters.Add() будет избегать инъекции sql, и мы не хотим, чтобы Sps всегда решали его? – aads
Parameters.Add() действительно поможет вам избежать SQL-инъекций. Независимо от того, выполняете ли вы фактические команды SQL непосредственно в .CommandText или, скорее, через хранимую процедуру, на самом деле не имеет значения в этой части (хотя я предпочитаю хранимые процедуры!). Просто не попадайте в ловушку преобразования параметров обратно в динамический SQL, как в .CommandText, так и в хранимой процедуре, как я уже говорил выше. – deroby