黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客安全 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]脚本攻击防范策略完全篇
      ★★★★★

脚本攻击防范策略完全篇

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-11-2 9:22:50

让我们还是从最简单的开始: 

防范脚本攻击 

JS脚本 和HTML脚本攻击的防范其实很简单: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), "'") 

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"),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"),"'")>0 or 

Instr(request("username"),"?")>0 or 

Instr(request("username"),chr(34))>0 or 

Instr(request("username"),chr(9))>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"),"""")>0 then 

response.write "朋友,你的提交用户名含有非法字符,请更改,谢谢合作 <a href='****:window.history.go(-1);'>返回</a>" 

response.end 

end if 

程序体(2) 

为了提供工作效率我们再将过滤内容程序化,这样对多个参数的过滤效率将有很大程度上的提高:如 程序体(3) 

‘以下为程序主体 

dim Bword(18) 

Bword(0)="?" 

Bword(1)=";" 

Bword(2)=">" 

Bword(3)="<" 

Bword(4)="-" 

Bword(5)="'" 

Bword(6)="""" 

Bword(7)="&" 

Bword(8)="%" 

Bword(9)="$" 

Bword(10)="'" 

Bword(11)=":" 

Bword(12)="|" 

Bword(13)="(" 

Bword(14)=")" 

Bword(15)="--" 

Bword(16)=" chr(9)" 

Bword(17)=" chr(34)" 

Bword(18)=" chr(32)" 

errc=false 

‘以下是应用实例部分 

for i= 0 to ubound(Bword) 

if instr(FQYs,Bword(i))<>0 then 

errc=true 

end if 

next 

if errc then 

response.write "<script language=""****"">" 

response.write "parent.alert('很抱歉!您的操作违法了);" 

response.write "history,back();" 

response.write "</script>" 

response.end 

end if 
程序体(3) 

有了上面的过滤函数您可以在任何需要过滤的地方应用过滤函数直接使用就可以了。这就使我们的修复工作大大的简化了。 

另外,我想在这里再次多提醒一下,一些站点的UBB在进行小的表情图标转化时也会出现过滤问题,由于很隐蔽所以不容易发现: 

如: 

我们标签内的文字进行修改, 

不知道各位看懂没,前一个单引号用来中和程序提供的左引号,第二个单引号用来中和闭合的右引号,这样程序输出就为: 

<img src="/img/0001.gif" onerror=****:alert(); alt=''> 

如果图片不存在,那么将激活onerror标签执行脚本程序。对于已经过滤了单引号的站点在这里用双引号一样可以完成。对于过滤了****字段的,只用alert()也完全可以。所以说要过滤就要过滤完全,别给攻击者留下一丝机会。 

上一页  [1] [2] [3] [4] [5] 下一页

文章录入:cainiaowang    责任编辑:cainiaowang 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体:
    Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886