防止SQL注入式攻击

SQL注入式攻击是指利用设计上的漏洞,在目标服务器上运行SQL命令以及进行其他方式的攻击,动态生成SQL语句时没有对用户输入的数据进行验 证。SQL注入式攻击是一种常规性的攻击,可以允许一些不法用户检索他人的数据,改变服务器的设置,或者在他人不小心的时候破坏其服务器。SQL注入式攻 击不是SQL Server问题,而是不适当的程序。

要防范SQL注入式攻击,应该注意以下几点。

(1)检查输入的SQL语句的内容,如果包含敏感字符,则删除敏感字符,敏感字符包括'、>、<=、!、-、+、*、/、()、|和空格等。

(2)不要在用户输入过程中构造WHERE子句,应该利用参数来使用存储过程。

说明:SQL注入一般出现在程序开发构造一个WHERE子句伴随着用户输入的时候。

在ASP.NET中可以自定义一个方法过滤非法字符,该方法如下:

以下是引用片段:
    /// <summary>
     /// 防止SQL 注入试攻击
     /// </summary>
     /// <param name="inputString">用户输入字符串</param>
     public string ConvertSql(string inputString)
     {
         inputString = inputString.Trim();
         inputString = inputString.Replace("'","''");
         inputString = inputString.Replace(";--","");
         inputString = inputString.Replace("=","");
         inputString = inputString.Replace("or","");
         inputString = inputString.Replace("and","");
         return inputString;
     }

使用以上方法在C#中不是最佳有效的途径,最佳途径是通过SqlCommand.Parameters 属性的参数传值实现,将非法字符过滤掉。主要代码如下。

以下是引用片段:
         myCommand.Parameters.Add(new SqlParameter("@loginName", SqlDbType.NVarChar, 20));
         myCommand.Parameters["@loginName"].Value = loginName;
         myCommand.Parameters.Add(new SqlParameter("@loginPwd", SqlDbType.NVarChar, 20));
         myCommand.Parameters["@loginPwd"].Value = loginPwd;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值