gpt4 book ai didi

c# - 在没有参数化查询的情况下防止 SQL 注入(inject)?

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:57 24 4
gpt4 key购买 nike

我正在使用 ASP.NET、C# 和 MS SQL,我创建了一个规则构建器页面,允许用户构建复杂的规则。此页面构建 SQL 调用中“Where”子句之后的内容,但规则页面无法构建子查询、操作顺序或其他非常复杂的子句。

我们希望为高级用户提供编辑此语句的选项,但我们希望阻止可以执行恶意代码的 SQL 注入(inject)攻击。我们不在乎他们是否想设置 1=1,我们真正关心的是他们试图突破调用更新/删除/存储过程等。因此,MS SQL 中任何可以在 where 子句之后出现的内容都是公平的。

这是一个用户可能想要输入的高级查询示例,规则生成器不会使用它的下拉菜单构建该查询。

Where Org in (Select Org from AnotherTable Where Manager in (1,2,3)) AND ((Person= 4 OR Level = 5) AND Entity between 5 and 10 or Entity = 15)

是否有人可以想到一些现成的或免费的东西?我见过一个很酷的规则生成器允许这样做,但它超过 2000 美元。

最佳答案

您是否真的需要清理查询,或者您是否可以仅以权限有限的用户身份执行查询,以便他们无法访问内部表或执行变更操作?如果您只想允许任意复杂的 SELECT 查询,那么调整权限可能就足够了。不过,根据您的环境,您可能仍需要考虑其他类型的攻击,例如将重复“SELECT * FROM ReallyBigTable”作为 DOS 类型的攻击。<​​/p>

关于c# - 在没有参数化查询的情况下防止 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com