过滤敏感字符

过滤敏感字符的思路非常简单,由于恶意攻击者一般需要在输入框中输入的文本一般含有or、and、select、delete之类的字符串片段,所以在拼接SQL之前检查用户提交的文本中是否含有这些敏感字符串,如果含有则终止操作。示例代码如下:


string user=txtUser.getText();

string password = txtPassword.getText();

//校验是否含有敏感字符

if(user.contains("or","and","select","delete")) { ShowMessage("可能存在注入漏洞攻击!"); return; } if(password.contains("or","and","select","delete")) { ShowMessage("可能存在注入漏洞攻击!"); return; } rs = ExuecuteQuery("SELECT (FPassword=‘"+password+"’) AS PwdCorrect FROM T_User WHERE FUser=‘"+password+"’"); if(rs.getBool("PwdCorrect ")==true) { ShowMessage("密码正确"); } else { ShowMessage("密码错误"); } 

这种方式能够过滤大部分注入漏洞攻击,但是有如下两个缺陷:

1,给正常用户的正常操作造成了麻烦。比如一个正常的用户的密码是“more”、“select”甚至就是“1” or “1”=“1”,它们是没有恶意的,但是在点击【提交】按钮后,系统却弹出了一个报错信息,用户必须将密码修改为一个不包含这些敏感字符串的密码,无疑这造成系统给用户的友好性非常差。国内著名的CMS产品“动易CMS”采用的就是这种方式来防止注入漏洞攻击的,这带来的麻烦就是如果用户要发表一个SQL 语句相关的文章,因为文章中有大量敏感字符,这造成这篇文章几乎无法发表。

2,逻辑难以严谨。尽管过滤了大部分的敏感字符串,但是攻击者是非常聪明的,他们也许能构造一个能够骗过敏感字符串过滤的字符串从而绕过这道“防火墙”。谈到安全性的时候人们都会说:所有用户输入都是不可信的!

转载于:https://www.cnblogs.com/yuyu666/p/9828064.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值