- 我已经使用过参数化查询次数,我知道它有助于防止 SQL 注入。但是,我想知道我是否可以知道在参数化查询中工作以防止 SQL 注入的基本逻辑是什么,这可能很简单,但我不知道。我试图在谷歌上搜索它的基本原理,但每次我找到一个如何在 Asp.net 中使用参数化查询的示例。
- 我知道制作一个特殊的类来停止那些在 SQL 注入中使用的特殊字符,如 (',-- 等),但是只停止特殊字符是否完全防止 SQL 注入?
- 最后一件事是 .net 参数化查询可以完全阻止 SQL 注入吗?
问问题
598 次
2 回答
2
我认为参数化查询不依赖于准备好的查询数据库支持。数据库驱动程序本身以安全的方式传递值,如何完成取决于驱动程序本身。
PostgreSQL 手册解释了有关数据库级别的参数化查询的基础知识。
另一方面,参数化查询简化了您传递区域敏感数据的过程。例如,用户输入 100,00 十进制,但您的服务器需要 100.00 值。
于 2010-12-15T14:58:46.910 回答
0
在我知道的每个数据库引擎中,使用“准备好的”(又名“参数化”或“静态”)查询可以防止 SQL 注入。如果将它们传递给参数,则不需要过滤任何字符。如果您曾经编写在代码中连接在一起而不是使用参数准备的 SQL,那么您可能会面临 SQL 注入的风险。您应该阅读您正在使用的数据库的安全手册,它很可能会有关于 SQL 注入的部分,但只需阅读所有内容。我敢打赌,这将花费不到一个小时,并且会给你可靠的指导和信心,让你相信你正在遵循适用于你的数据库的最佳实践。
于 2010-12-15T05:46:01.087 回答