过滤敏感字符

过滤敏感字符的思路非常简单,由于恶意攻击者一般需要在输入框中输入的文本一般含有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,逻辑难以严谨。尽管过滤了大部分的敏感字符串,但是攻击者是非常聪明的,他们也许能构造一个能够骗过敏感字符串过滤的字符串从而绕过这道“防火墙”。谈到安全性的时候人们都会说:所有用户输入都是不可信的!

posted @   尐鱼儿  阅读(936)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示