实例:详解跨站脚本攻击的攻与防
| <%@ Language=VBScript %> <% If Request.Cookies("userName") <> "" Then redirect if detect the cookie Dim strRedirectUrl strRedirectUrl = "page2.asp?userName=" strRedirectUrl = strRedirectUrl & _ server.URLEncode(Request.Cookies("userName")) Response.Redirect(strRedirectUrl) Else %> <HTML> <HEAD> <META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1"> <TITLE>MyNiceSite.com Home Page</TITLE> </HEAD> <script LANGUAGE="javascript"> <!-- function checkForm() { document.forms[0].userName.value = RemoveBad(document.forms[0].userName.value); return true; } //****************************************************** //Programmer: NOT ORIGINAL CODE - COMES FROM MICROSOFT //Code Source: Microsoft Knowledge Base Article Q25z985 //Description: Removes bad characters. //****************************************************** function RemoveBad(strTemp) { strTemp =strTemp.replace(//<//>//"////%//;//(//)//&//+//-/g, ""); return strTemp; } //--> </SCRIPT> <BODY> <BR> <H2>MyNiceSite.com</H2> <BR> <FORM method="post"action="page2.asp" onsubmit="return checkForm();"> Enter your MyNiceSite.com username: <INPUT type="text"name="userName" width="10" maxwidth="10"> <INPUT type="submit"name="submit" value="submit"> </FORM> </BODY> </HTML> <% end if %> |
Page2.asp中加入如:
| <%@ Language=VBScript %> <% Dim strUserName If Request.QueryString("userName")<>"" Then strUserName =server.HTMLEncode(Request.QueryString("userName")) Else Response.Cookies("userName") =Request.Form("userName") strUserName = server.HTMLEncode(Request.Form("userName")) End If %> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"> </HEAD> <BODY> <H3 style="text-align:center">Hello: <%= strUserName %></H3> </BODY> </HTML> |
现在由于这种攻击受到有效的防制,恶意的标签和脚本被编码,他们就被以文字的形式显现了出来。我们也可增加一个IIS组件用于过滤所有从动态输入中的特殊字符。对于那些已经做好的网站,采用这种办法来防止跨站脚本攻击很容易实现。我们的这个控件能拦截来自ASP页面的REQUEST目标,可对表格、cookie、请求字符串和程序的内容进行检测。我们也可以通过编写log文件的方法把统计数据加入这个组件中。每当一个客户输入一个非法字符时,这个组件会记下它的IP地址和时间。我们只需采取一些简单的设置就能有效地阻止跨站脚本的攻击。除了以上所说的三种方法外,微软和CERT还强烈推荐使用一种他们称之为"sanity check"的方法。假设有个输入窗口只允许输入数字,我们就限定它只允许0-9数字的输入。微软和CERT所采用的这种对输入的字符进行限定的办法要比单独的采用过滤特殊字符要好得多,采用了这些措施后你就能让那些参观你网站的客户在访问你网站时受到保护。
如何免受黑客攻击浏览器
当你在网上冲浪时,怎样来避免受到攻击呢?在我们所举的例子中,即使用户注意了自己的浏览习惯,也不能完全避免在网上遭到黑客的袭击。具有讽刺的是,大多数的危险都来自于我们最信任的网站。如果要让网站一定不出问题,你只好不下载任何动态内容或者任何cookie。微软也警告用户应把浏览器的Active Script设置成严格限制的状态并把Email也设成严格限制的接收模式。同时在点击邮件中的链接时,一定要加倍小心。
结论
无论我们是从事何种工作,安全问题只会变得越来越复杂化,我们必须提高安全防范意识。在CERT公司的一篇报告中曾提到:"跟据目前的研究显示,每个在英特网上具有域名的网站平均一年被黑客至少攻击一次。" 对服务器来说那怕只是一次这种攻击也是不能承受的。跨站脚本攻击有人并不认识他是一种攻击手段,有人仅仅认为这是玩笑,但是谁也不能忽视其隐藏的威胁。随着网络钓鱼行为的更加频繁,随着黑客相关知识更容易获取,每一个从事安全开发的人都必须提高警惕
- 戴尔推出中小企业服务器R300与T300(02-22)
- 蓝色基因GL-1120服务器突破1U服务器性价比极限(02-23)
- 64位线程!SUN 富士通扩展SPARC产品线(03-13)
- 处理器主频超5GHz IBM新推高端P595服务器(03-10)
- MemoRight推GT系列128G高速SSD(03-24)
- 日本推出手持式极端环境Linux服务器(03-25)
