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上,您可以捕获此异常并向您的用户显示一些输出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |