- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网页脚本攻击防范全攻略.doc
网页脚本攻击防范全攻略~教育资源库
近来,网络上的SQL Injection 漏洞利用攻击,JS脚本,HTML脚本攻击似乎逾演逾烈。陆续的很多站点都被此类攻击所困扰,并非像主机漏洞那样可以当即修复,来自于L脚本攻击的防范其实很简单:server.HTMLEncode(Str)完事。当然你还不要大叫,怎么可能?你让我把全站类似<%=uid%>都加过滤我还不累死?为了方便的过滤,我们只需要将HTML脚本和JS脚本中的几个关键字符过滤掉就可以了:程序体(1)如下:
以下是过滤函数
<%
function CHK(fqyString)
fqyString = replace(fqyString, >, >)
fqyString = replace(fqyString, <, <)
fqyString = replace(fqyString, #, )
fqyString = Replace(fqyString, CHR(32), )
fqyString = Replace(fqyString, CHR(9), )
fqyString = Replace(fqyString, CHR(34), )
fqyString = Replace(fqyString, CHR(39), #39;)
fqyString = Replace(fqyString, CHR(13), )
fqyString = Replace(fqyString, CHR(10) CHR(10), </P><P> )
fqyString = Replace(fqyString, CHR(10), <BR> )
CHK = fqyString
end function
%>
以下是应用实例
<%=CHK(Username)%>
Username=CHK(replace(request(username),,)) 使用Include把函数写在公有页面上,这样效率是最好的。
程序体(1)
另外,值得我们注意的是,很多站点在用户注册,或者是用户资料修改的页面上也缺少脚本的过滤,或者是只在其中之一进行过滤,注册进入后修改资料仍然可以进行脚本攻击。对用户提交的数据进行检测和过滤,程序体(2) 如下:
以下是过滤函数
If Instr(request(username),=)>0 or
Instr(request(username),%)>0 or
Instr(request(username),
1234567下一页 友情提醒:,特别!chr(32))>0 or
Instr(request(username),?)>0 or
Instr(request(username),)>0 or
Instr(request(username),;)>0 or
Instr(request(username),,)>0 or
Instr(request(username),#39;)>0 or
Instr(request(username),?)>0 or
Instr(request(username),chr(34))>0 or
Instr(request(username),chr(9))>0 or
Instr(request(username),?K)>0 or
Instr(request(username),$)>0 or
Instr(request(username),>)>0 or
Instr(request(username),<)>0 or
Instr(request(username),)>0 then
response. Bp;
Bg src=img/0001.gif onerror=****:alert(); alt=>
如果图片不存在,那么将激活onerror标签执行脚本程序。对于已经过滤了单引号的站点在这里用双引号一样可以完成。对于过滤了****字段的,只用alert()也完全可以。所以说要过滤就要过滤完全,别给攻击者留下一丝机会。
防范SQL Injection 漏洞攻击
可以这样说,这里似乎是整篇文章的重点了.SQL Injection 漏洞攻击的的多样化也使得我们在程序防护上不得不想的更多一些。面对SQL Injection 的强大攻势,我们到底该过滤哪些?
一些常用的危险字符有
#39; 数据库字段判别封闭
-- 某些数据库和 一样
NULL 小心空录入的危险,可能导致数据库或系统处理报错,利用报错构造溢出.
空格和#39;一起,构造sql injeciton
?
文档评论(0)