温柔的杀手——跨站ASP Script攻击
2006-11-06 19:58:24 来源:WEB开发网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
更多精彩
赞助商链接