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

在大型asp.net C#Web应用程序中修复SQL注入表单

发布时间:2020-12-16 07:09:50 所属栏目:asp.Net 来源:网络整理
导读:我必须修复一个易受SQL注入攻击的项目. 项目中每个页面中的所有表单都不使用参数化查询,而只使用字符串查询. 例如,我有搜索页面,查看后面的代码,我看到有一个方法CreateQuery()根据文本字段创建查询,例如: string sQuery = "";sQuery += "b.name like '%" +
我必须修复一个易受SQL注入攻击的项目.

项目中每个页面中的所有表单都不使用参数化查询,而只使用字符串查询.

例如,我有搜索页面,查看后面的代码,我看到有一个方法CreateQuery()根据文本字段创建查询,例如:

string sQuery = "";
sQuery += "b.name like '%" + txtName.Text + "%'";

然后在btnSearch_Click()中我有了执行查询的方法:

query = CreateQuery();
var totalList = GetAllBlaBla(query);

我的问题是:

由于我有数百个表单和数千个formText和值到FIX,是否有一个“快速”的解决方案来实现

>一个全局函数,可以参数化查询或以某种方式处理情况?
>因为在每个类中查询都在SubmitButton_Click()代码后面的方法中执行,我可以在这里处理这种情况,当然在每个类中?
>我是否应该修改表单代码中的每个表单和每个条目以参数化SQL字符串,这将需要一百万年?
>(编辑)编码/解码输入值怎么样?所以上面的例子将是:

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});

(这比手动处理所有参数更容易)

(编辑:李大同)

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

    推荐文章
      热点阅读