.NET中的参数化查询安全吗?也就是说,.NET在使用参数时会自动转义危险字符吗?.NET参数化查询注入
4
A
回答
12
当您使用参数时,它们通常不会首先作为文本发送。他们可以使用数据库的本地有线协议。如果参数本身是一个文本参数,那么它通常会被封装在协议中,以便数据库知道它是一个参数而不是SQL。
虽然我想供应商可能只是将参数转换为完整的SQL语句,这将是一个可怕的做事方式。
所以基本上“是” - 参数化查询是从SQL注入攻击安全有效,只要你没有存储动态执行参数,作为SQL等程序
2
当您使用参数,NET的SQL客户端会将参数值发送到原始TDS流中的SQL服务器。
但是,这并不能保护您免受不良SQL影响。
如果你的SQL调用EXECUTE
的字符串包含一个连接参数,那么你仍然是脆弱的。
0
就字符串值而言,是的 - .NET会将它们转义给您,您可以通过尝试在表中找到值 - “comment”来查看这些值,这会破坏连接的语句,但哪些工作正常用参数化查询。
正如乔恩所说,尽管像数字和日期这样的东西将会以他们的原生格式发送,这样更安全/更快。
相关问题
- 1. 插入参数化查询
- 2. 在LINQ查询中注入参数
- 3. ASP.NET中的参数化查询SQL注入
- 4. SQL注入,使用参数化的查询
- 5. 参数化查询
- 6. 参数化查询
- 7. 参数化查询
- 8. 混合参数化查询和插入
- 9. 文本输入的参数化查询
- 10. JPA查询 - 位置参数sql注入jpa本地查询
- 11. 如何将以下查询写入参数化查询?
- 12. MS-接入+ VB6:参数化查询不存储查询
- 13. 如何参数化查询?
- 14. MSSQL参数化查询
- 15. 从参数化SQL查询
- 16. Postgresql参数化查询
- 17. 参数化查询Visual Basic
- 18. 参数化WHERE在查询
- 19. 从参数化SQL查询
- 20. 参数化查询问题
- 21. ColdFusion的参数化查询
- 22. SPARQL参数化查询
- 23. C#mysql参数化查询
- 24. Python - MySQLdb参数化查询
- 25. ASP/MySQL - 参数化查询
- 26. 有关参数化查询
- 27. pymysql:MySQL参数化LIKE查询
- 28. 参数化查询jqgrid
- 29. Crystal Reports参数化查询
- 30. SQL参数化查询CTE
我不确定我会说他们真的被*转义*这样 - 他们很可能被封装在这样一种方式,以消除转义的要求。它更可能是“接下来的20个字节形成以UTF-8编码的字符串参数” - 如果该数据包含引号等,则无关紧要,因为它不会被视为SQL。 – 2010-07-27 15:33:57
事实上 - “封装”是一种更加准确的说法,因为“解析”只是解析器具有不能使用的特殊字符时才执行的操作,在这种情况下不适用。 – SqlRyan 2010-07-27 15:39:40