参数化查询的基础知识

时间:2010-12-15 05:01:41

标签: asp.net sql parameterized-query

  1. 我使用参数化查询次数,我知道它有助于防止SQL注入。 但是,我想知道我是否能够知道参数化查询中的基本逻辑是什么 防止SQL注入可能是非常简单,但我不知道它。我试图搜索谷歌它的基本内容,但每次我找到一个如何在Asp.net中使用参数化查询的例子。
  2. 我知道创建一个特殊的类来阻止那些在SQL注入中使用的特殊字符(', - etc),但是只停止特殊字符会完全阻止SQL注入吗?
  3. 最后一件事.net参数化查询可以完全停止SQL注入吗?

2 个答案:

答案 0 :(得分:2)

我认为参数化查询不依赖于准备好的查询数据库支持。数据库驱动程序本身以安全的方式传递值,如何完成取决于驱动程序本身。

数据库级PostgreSQL manual explains basics about parametrized queries

另一方面,参数化查询简化了传递区域设置敏感数据的过程。 例如,用户输入100,00十进制,但您的服务器预期值为100.00。

答案 1 :(得分:0)

在我所知道的每个数据库引擎中,使用“prepared”(又名“参数化”或“静态”)查询可以防止SQL注入。如果将任何字符传递给参数,则无需过滤任何字符。如果您编写的SQL在代码中连接在一起而不是使用参数编写,则可能存在SQL注入的风险。您应该使用您正在使用的数据库的安全手册,它很可能会有一个关于SQL注入的部分,但只是阅读所有内容。我敢打赌,这需要一个小时的时间,并且会给你坚实的指导和信心,使你最好地遵循适用于你的数据库的做法。