|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业; 通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。 跨站Script进击(三)
第二局部:跨站Script进击的防犯
1、若何防止办事器遭到跨站Script的进击
值得光荣的是,避免跨站Script进击的手艺正趋于完美。今朝可接纳这几种体例来避免跨站Script的进击:
1.对静态生成的页面的字符停止编码
2.对输出停止过滤和限制
3.利用HTML和URL编码
1.对静态生成的页面的字符停止编码
你们起首要采取的就是对静态生成页面的字符停止编码,你必需如许做,否则黑客很有能够更改你的字符设置而等闲地经由过程你
的防地。假如咱们的网站是个英语网站,如许只需咱们把字符编码设成拉丁字符ISO-8859-1就好了,详细情形以下:
<META http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
2.过滤和限制一切输出的数据
这是避免跨站Script的进击的第二种办法,在停止登录的时侯,不要让那些特别的字符也输出出来。因而咱们可在ONSUBMIT方
法中到场JAVASCRIPT法式来完成这个功效。在本例中咱们限制最多只能输出15个字符。如许可以禁止那些较长的script的输出。
在<<Knowledge Base Article QA252985>>这本书中微软供应了一个冗长的Javascript法式来完成对输出数据的过滤。咱们
也依据详细情形引进了这段代码用于咱们的例子中,如:
function checkForm() {
document.forms[0].userName.value = _
RemoveBad(document.forms[0].userName.value);
return true;
}
// MICROSOFT'S CODE
function RemoveBad(strTemp) {
strTemp = strTemp.replace(/\</\>/\"/\'/\%/\;/\(/\)/\&/\+/\-/g,"");
return strTemp;
}
用这个举措,可以过滤在输出中含有的这些字符:
% < > [ ] { } ; & + - " '( )
3.利用HTML和URL编码
虽然利用下面所说的过滤和限制输出的举措是一种十分主要用进攻手腕,但它对我的这类采取邮件体例的进击仍是力所不及。
由于我把URL的参数直接放在邮件中。针对这类情形咱们不能不接纳一种更无力的平安办法。假如咱们用的ASP,处理起来绝对说来
要轻易很多。只需对静态生成的网页总停止HTML和URL编码就好了。针对咱们例子中的情形,在第一输出页中咱们对redirect URL
作了以下修改:
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Response.Cookies("userName"))
在履行页中咱们到场:
strUserName =server.HTMLEncode(Request.QueryString("userName"))
和
strUserName =server.HTMLEncode(Request.Form("userName"))
微软保举对一切静态页面的输出和输入都应停止编码。乃至在对数据库数据的存入和掏出也应如斯。如许你就可以在很大水平上
防止跨站script的进击。
要做到这些还要在Page1.asp中到场:
<%@ 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" >
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 align="center">Hello: <%= strUserName %></H3>
</BODY>
</HTML>
如今因为这类进击遭到无效的防制。那于那些歹意的标签和Script被编码,他们就被以文字的模式展现了出来,以下图:
咱们也可增添一个IIS组件用于过滤一切从静态输出中的特别字符。关于那些已做好的网站,采取这类举措来避免跨站
script的进击来得十分轻易。咱们的这个控件能拦阻来自ASP页面的REQUEST方针,可对表格,cookie,恳求字串和法式的内容停止
检测:
咱们也能够经由过程编写log文件的办法把统计数据到场这个组件中。每当一个客户输出一个不法字符时,这个组件会记下它的IP
地址和工夫。概况请见Doug Dean的<<Roll your Own IIS Application on ASPToday>>一文。
咱们只需接纳一些复杂的步聚就可以无效地禁止跨站script的进击。除以上所说的三种办法外,微软和CERT还激烈保举利用一
种他们称之为“sanity check”的办法。例如,假定有个输出窗口只答应输出数字,咱们就给它做个限制,只答应0-9数字的输
入。微软和CERT所采取的这类对输出的字符停止限制的举措要比独自的采取过滤特别字符要好很多。采取了这些办法后你就可以让那
些观赏你网站的客户在会见你网站时遭到回护。
2、免受黑客进击咱们阅读器办法:
当你在网上遨游的时侯,如何来防止遭到进击呢?微软和CERT建议不要在网上胡碰乱闯。针对这类情形,PC杂志一个栏目标名
叫John Dvorack作者作了一个饶有乐趣的回覆。他以为这是微软公司一同有预谋的行动:就是用来威吓网上冲浪的人到那些平安的
站点去阅读,如美国在线和MSN.com网站。
在咱们所举的例子中,即便你不在网上胡乱浪荡,也不克不及防止在网上遭到黑客的攻击。具有取笑意义的是,大多半的风险都来
自于咱们最信赖的网站。假如要让网站必定不出成绩,你只好不下载任何静态内容或任何cookie。预知概况请参阅阅读器的相干
材料。
微软也正告你们应把阅读器的Active Script设置成严厉限制的形态并把Email也设成严厉限制的吸收形式。在点击邮件中的
链接时,必定要当心。如需进一步懂得情形请参阅一本名叫<<Microsoft's Knowledge Base Article Q253117>>的书。为了以
防万一,你最好是多一点上彀经历,而且时辰要当心慎重。
结论
假如你是之前的UNIX法式开辟人员,你或许不会晓得跨站script意谓着甚么。你晓得很多站点的办理人员登录的用户名和暗码
分离为root,root.一样很多数据库办理员的称号和暗码分离为sa,password。你也晓得Webzine(如Phrack 和 Alt2600),根据他
们所供应的办法能让你一步步地晓得某台办事器的弱点。在这类硬件上,你也晓得很多网站的数据库办事器和web办事器都没有停止
自我回护。一但遭受黑客,机械就得瘫痪。
虽然咱们很轻易接纳避免体系遭到黑客的进击的办法,但咱们的体系是一向表露在黑客眼前的。咱们完整有来由信任下一年还
会呈现一些新的平安破绽。在CERT公司John Howard师长教师指点下完成的一篇论文中曾提到:“跟据今朝的研讨显示,每一个在英特网
上具有域名的网站均匀一年被黑客最少进击一次。”
对办事器来讲那怕只是一次这类进击也是不克不及接受的。跨站Script进击是黑客可采取的另外一种办法。但咱们只需停止以上所说
的一些复杂的处置就可以避免这类模式进击的产生。
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|