|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。打击第二部分:跨站Script打击的防犯
1、怎样制止服务器遭到跨站Script的打击
值得光荣的是,避免跨站Script打击的手艺正趋于完美。今朝可接纳这几种体例来避免跨站Script的打击:
1.对静态天生的页面的字符举行编码
2.对输出举行过滤和限定
3.利用HTML和URL编码
1.对静态天生的页面的字符举行编码
你们起首要接纳的就是对静态天生页面的字符举行编码,你必需如许做,否则黑客很有大概变动你的字符设置而容易地经由过程你的防地。假如我们的网站是个英语网站,如许只需我们把字符编码设成拉丁字符ISO-8859-1就好了,详细情形以下:
<METAhttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1">
2.过滤和限定一切输出的数据
这是避免跨站Script的打击的第二种办法,在举行登录的时侯,不要让那些特别的字符也输出出来。因而我们可在ONSUBMIT办法中到场JAVASCRIPT程序来完成这个功效。在本例中我们限定最多只能输出15个字符。如许能够制止那些较长的script的输出。
在<<KnowledgeBaseArticleQA252985>>这本书中微软供应了一个冗长的Javascript程序来完成对输出数据的过滤。我们也依据详细情形引进了这段代码用于我们的例子中,如:
functioncheckForm(){
document.forms[0].userName.value=_
RemoveBad(document.forms[0].userName.value);
returntrue;
}
//MICROSOFTSCODE
functionRemoveBad(strTemp){
strTemp=strTemp.replace(/</>/"//\%/;/(/)/&/+/-/g,"");
returnstrTemp;
}
用这个举措,能够过滤在输出中含有的这些字符:
%[]{};&+-"()
3.利用HTML和URL编码
只管利用下面所说的过滤和限定输出的举措是一种十分主要用进攻手腕,但它对我的这类接纳邮件体例的打击仍是力所不及。由于我把URL的参数间接放在邮件中。针对这类情形我们不能不接纳一种更无力的平安措施。假如我们用的ASP,办理起来绝对说来要简单很多。只需对静态天生的网页总举行HTML和URL编码就好了。针对我们例子中的情形,在第一输出页中我们对redirectURL作了以下修改:
strRedirectUrl=strRedirectUrl&_
server.URLEncode(Response.Cookies("userName"))
在实行页中我们到场:
strUserName=server.HTMLEncode(Request.QueryString("userName"))
和
strUserName=server.HTMLEncode(Request.Form("userName"))
微软保举对一切静态页面的输出和输入都应举行编码。乃至在对数据库数据的存进和掏出也应云云。如许你就可以在很年夜水平上制止跨站script的打击。
要做到这些还要在Page1.asp中到场:
<%@Language=VBScript%>
<%IfRequest.Cookies("userName")""Then
redirectifdetectthecookie
DimstrRedirectUrl
strRedirectUrl="page2.asp?userName="
strRedirectUrl=strRedirectUrl&_
server.URLEncode(Request.Cookies("userName"))
Response.Redirect(strRedirectUrl)
Else%>
<HTML>
<HEAD>
<METAhttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1">
<TITLE>MyNiceSite.comHomePage</TITLE>
</HEAD>
<SCRIPTLANGUAGE="javascript">
<!--
functioncheckForm(){
document.forms[0].userName.value=
RemoveBad(document.forms[0].userName.value);
returntrue;
}
//******************************************************
//Programmer:NOTORIGINALCODE-COMESFROMMICROSOFT
//CodeSource:MicrosoftKnowledgeBaseArticleQ25z985
//Description:Removesbadcharacters.
//******************************************************
functionRemoveBad(strTemp){
strTemp=strTemp.replace(/</>/"//\%/;/(/)/&/+/-/g,"");
returnstrTemp;
}
//-->
</SCRIPT>
<BODY>
<BR>
<H2>MyNiceSite.com</H2>
<BR>
<FORMmethod="post"action="page2.asp"onsubmit="returncheckForm();">
EnteryourMyNiceSite.comusername:
<INPUTtype="text"name="userName"width="10"maxwidth="10">
<INPUTtype="submit"name="submit"value="submit">
</FORM>
</BODY>
</HTML>
<%endif%>
Page2.asp中加如:
<%@Language=VBScript%>
<%DimstrUserName
IfRequest.QueryString("userName")""Then
strUserName=server.HTMLEncode(Request.QueryString("userName"))
Else
Response.Cookies("userName")=Request.Form("userName")
strUserName=server.HTMLEncode(Request.Form("userName"))
EndIf%>
<HTML>
<HEAD>
<METAhttp-equiv="C</p>由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|