在大型asp.net C#Web应用程序中修复SQL注入表单
我必须修复一个易受SQL注入攻击的项目.
项目中每个页面中的所有表单都不使用参数化查询,而只使用字符串查询. 例如,我有搜索页面,查看后面的代码,我看到有一个方法CreateQuery()根据文本字段创建查询,例如: string sQuery = ""; sQuery += "b.name like '%" + txtName.Text + "%'"; 然后在btnSearch_Click()中我有了执行查询的方法: query = CreateQuery(); var totalList = GetAllBlaBla(query); 我的问题是: 由于我有数百个表单和数千个formText和值到FIX,是否有一个“快速”的解决方案来实现 >一个全局函数,可以参数化查询或以某种方式处理情况? string sQuery = ""; var txt = var txt = HttpUtility.HtmlEncode(txtName.Text); sQuery += "b.name like '%" + txt + "%'"; 这是一个可能的临时补丁吗? 5-(编辑)这是一个可能的解决方案,还是根本不改变任何东西? cmd.Parameters.Add("@txtNameParameter",SqlDbType.VarChar); cmd.Parameters["@txtNameParameter"].Value = txtName.Text; sQuery += "b.name like '%" + (string)cmd.Parameters["@txtNameParameter"].Value + "%'"; 问题是我必须返回一个字符串,因为处理查询的逻辑是在另一个将字符串作为查询的业务类中定义的,我不能给它一个CommandType或SqlDataAdapter … 建议? 提前致谢. 解决方法
你已经知道有问题;国际海事组织,这里的任何“快速”修复都可能减少攻击面,但不太可能阻止确定的滥用;简单地说,黑名单真的很难,并且黑帽(以及样本,白帽)网站上有一些非常奇怪的输入.这些并不总是容易被识别为滥用.它不是所有’drop table Customers – ; p
无论你做什么,我都建议你做得好;参数.像dapper这样的工具可能会减少您需要的代码,但是: sQuery += "b.name like '%'+@text+'%'" ... conn.Execute(sQuery,new {text=txtName.Text}); (这比手动处理所有参数更容易) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-2 – Html.TextBoxFor格式和css类
- 在ASP.NET中使用新的会话ID打开一个新的浏览器窗口
- asp.net-mvc – 如何在MVC3中创建一个隐藏字段?
- asp.net-mvc – ASP.NET MVC2母版页 – 服务器端脚本无法渲
- 提交前台table中的值到后台的几种方式
- asp.net-core – 在VS 2015 RC中,编译保存不适用于ASP.NET
- asp.net – 回发时超过最大请求长度异常
- 如何在ASP.NET网站中解决长时间的Glimpse线路时间问题?
- asp.net – 向实体框架添加其他属性4代码首先是CTP 5实体
- asp.net – [DataType(DataType.EmailAddress)]和[EmailAdd
- asp.net-core – 在ASP.NET vNext过滤器中获取注
- asp.net-mvc – 仅为未经过身份验证的用户缓存内
- asp.net-mvc-4 – TempData不适用于MVC4中的第二
- ASP.NET MVC 4的Windows身份验证 – 它如何工作,
- asp.net-core – 在发布ASP.NET Core应用程序时自
- asp.net-mvc – Unity和Random“索引超出了数组的
- asp.net-mvc-3 – 从View中访问RouteData.Values
- asp.net – 基于基于角色的安全隐藏Html.ActionL
- asp.net-mvc – 如何从ASP.NET MVC的部分视图中获
- 剃刀 – MVC布局VS MVC主页