【发布时间】:2018-09-12 15:39:38
【问题描述】:
我正在编写一个简单的脚本来根据用户输入查询数据库,我想知道是否有可能注入类似 .net 的参数化查询的东西?
【问题讨论】:
-
假设没有插入纯字符串并且只触发带有参数名称的常量,则没有注入的机会。这或多或少是为什么如此强烈地鼓励使用参数的原因。 (嗯,它们还有其他好处,例如计划重用,但这是另一回事。)
-
我明白了。谢谢!
-
你也可以使用像 EF 这样的 ORM。或者至少我建议使用 Dapper 来避免大量 ADO.Net 样板代码。
-
完全参数化的 SQL 查询不可能进行 SQL 注入。 .NET 库以防止将参数值重新解释为 SQL cmets 或关键字的方式将参数值传输到 SQL Server。不幸的是,它不会让你 100% 安全。您需要避免某些使系统容易受到注入攻击的构造 - 具体而言,您需要避免直接调用
EXEC。