加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在.Net Web API的动态sql中阻止sql注入?

发布时间:2020-12-15 22:23:18 所属栏目:百科 来源:网络整理
导读:我只是没有找到任何我喜欢的答案. 我想做的事情如下: public class TestSqlInjectionController : ApiController{ public IEnumerableTestSqlInjectionUser Get([ValidateSqlInjection]string usernameFilter = null) { 其中[ValidateSqlInjection]查找基本
我只是没有找到任何我喜欢的答案.

我想做的事情如下:

public class TestSqlInjectionController : ApiController
{
    public IEnumerable<TestSqlInjectionUser> Get([ValidateSqlInjection]string usernameFilter = null)
    {

其中[ValidateSqlInjection]查找基本信息,如传入过滤器包含;,–,DROP或DELETE时抛出错误.

所以我有一个可维护的清单.

然后创建一个自定义属性:

[FilterField1ValidateSqlInjection]

这里可能将逗号分隔的列表拆分为数组.

然后滚动数组并确保每个元素与枚举中的一个值匹配.

这听起来像正朝着正确的方向前进吗?

问题是我们必须使用动态SQL进行大量的分页,排序和过滤.没有其他办法了.

所以命令参数并没有真正为我们做很多事情.

对于那些有.Net SQL注入体验的人来说,自定义属性属性听起来是个好主意吗?

解决方法

最好的选择是使用SQL参数,但由于它还不够,我会尝试使用像SQL模式这样的SQL执行器.

相反,您尝试使用属性装饰所有可能的输入,创建一个负责执行所有动态查询的辅助类,并在执行方法测试内部创建任何SQL注入模式.您可以使用regex like this example执行此操作,如果找到则抛出异常.

在您的UI上,您可以捕获此异常并向您的用户显示一些输出.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读