栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 学术 > 人文期刊 > 科技视界

某网站SQL注入漏洞修补

某网站SQL注入漏洞修补

范义山

【摘 要】网站SQL注入漏洞风险性极大,并且非常普遍,要检查网站是否有SQL注入漏洞非常容易,但是要修补SQL注入漏洞,还是需要一定的编码能力和实际经验。本文以一个真实的SQL注入漏洞修补过程为例,讲解注入漏洞修补方法。

【关键词】SQL注入漏洞;修补;正则表达式

近日,我单位某部门网站被教育行业漏洞报告平台报告含有SQL注入漏洞,并给出了具体的路径、参数和截图,经我们验证漏洞确实存在。

1 漏洞现状

漏洞一为一个URL型注入漏洞,网址为http:/

if(!Regex.IsMatch(menuid,?@"^\d{1,5}$"))

{

Response.Write ("检测到SQL注入危险, 请勿非法操作!");

Response.End();

}

if(!Regex.IsMatch(childid,?@"^\d{1,5}$"))

{

Response.Write ("检测到SQL注入危险, 请勿非法操作!");

Response.End();

}

4.2 漏洞二修补方案

因为合法数据为字符串,而非法数据也为字符串,所以不好从识别合法数据的角度进行数据过滤。但非法数据中含select、update、delete、insert、or、and、=、等SQL语句中的关键词,可以从识别非法数据的角度来进行数据过滤。代码如下:

using System.Text.Regularexpressions;

string pattern =@"'|;|#|([\s\b+()]+(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b+]*)";

Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);

if (rgx.IsMatch(title))

{

Response.Write ("检测到SQL注入危险, 请勿非法操作!");

Response.End();

}

4.3 漏洞三修补方案

漏洞三的修补和漏洞二一样,也是从识别非法数据的角度进行过滤,只需将方案二中的title变量改成用户名、密码的变量username、password,然后分别检测即可。将漏洞二、漏洞三设置成两个类别的目的是为了提醒程序员,黑客可以从搜索框、用户名密码框进行注入。

5 系统调试

5.1 手工测试

对漏洞一,采用单引号测试法(在网址后面添加单引号)、1=1测试法(在网址后面添加 and 1=1或and 1=2),发现都会弹出注入警告,不再出现正常显示的网页或错误代码,证明非法数据被识别,未提交数据库执行。

对漏洞二、三,分别在搜索框、用户名密码框中输入' or '1'='1,发现都会弹出注入警告,不再出现正常显示的网页或错误代码或登录成功,证明非法数据未提交数据库执行。

5.2 工具软件测试

采用工具软件SQLMAP进行注入测试,均提示” [CRITICAL] all tested parameters appear to be not injectable” ,说明已经不可注入,证明漏洞已经修补。

6 结语

注入漏洞风险性极大,应该引起足够重视。正则表达式能有效的对数据进行合法性检验,过滤非法数据,保障网站安全。另外,还应在防火墙上做相应的防护策略,阻止黑客对网站的渗透测试,渗透测试虽然不一定能成功,但会严重占用服务器CPU、内存资源,降低网站反应速度,甚至对网站的稳定性、可用性带来很大威胁。最后,采用网页静态化技术可以有效降低网站被注入的危险,提高网站安全性。

[责任编辑:朱丽娜]endprint

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/xueshu/280779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号