是否sqlCommand.Parameters.Add(sqlParam)检查保留字如'Table','Drop'等 基本上我想通过使用上面的方法知道我们如何避免Sql注入什么是机制在那里。Parameters.Add和Sql注入
0
A
回答
2
这一切都取决于你计划在您正在执行的SQL参数做什么。关于使用.Parameters.Add()的好处是,这些值是单独传递的,而不是大块chunk-o-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-Injection-ISH的东西。
0
不,它不会将参数视为保留字。使用参数化存储过程是避免sql注入的最好方法。
+0
感谢您的回复,请提供给我在那里指出占位符不会帮助防止SQL注入参考 – aads
+0
哦......我相信我能拿出一个参数化存储过程,很容易受到SQL注入攻击。 :) –
相关问题
- 1. Parameters.Add在SQL项目C#
- 2. 差异与Parameters.Add和Parameters.AddWithValue
- 3. Dapper和SQL注入
- 4. Doctrine和SQL注入
- 5. SQL注入和Codeigniter
- 6. LINQ和SQL注入
- 7. PHP和SQL注入
- 8. Hibernate和SQL注入
- 9. mysql_num_rows和SQL注入
- 10. EntitySQL和SQL注入
- 11. SqlCeResultSet和SQL注入
- 12. ORM和SQL注入
- 13. Linq到SQL和SQL注入
- 14. parse_str和ajax和sql注入
- 15. SQL注入和Postgres“CREATE SCHEMA”
- 16. SQL注入和.NET 4
- 17. Doctrine2 FindOneBy和SQL注入
- 18. LINQ to Entities和SQL注入
- 19. Like子句和sql注入
- 20. doctrine 2 orm和sql注入
- 21. Gnome的libgda和SQL注入
- 22. SQL注入和LIKE语句
- 23. SqlDataSource控件和SQL注入
- 24. SQL注入,行情和PHP
- 25. SQL注入攻击和django
- 26. Erlang和SQL注入攻击
- 27. Django和SQL注入示例
- 28. PHP SQL注入和保护?
- 29. CFWheels ORM和SQL注入
- 30. 内容值和SQL注入
你真的应该阅读相关文章[关于Bobby Tables](http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-工作?rq = 1),它解释得更好,并引用了很多其他相关信息。 – deroby
所以这意味着.Parameters.Add()将避免SQL注入,我们不想去总是解决它的Sps? – aads
Parameters.Add()确实可以帮助您避免SQL注入。无论你直接在.CommandText中执行实际的SQL命令,还是通过存储过程执行实际上并不重要(尽管我更喜欢存储过程!)。简单地说,不要陷入将参数转换回动态SQL的陷阱,无论是在.CommandText还是在存储过程中,就像我上面所说的那样。 – deroby