跨站Script攻击(三)

エックス

エックス

2016-01-29 18:02

跨站Script攻击(三),跨站Script攻击(三)
  跨站Script攻击(三)

第二部分:跨站Script攻击的防犯

一、如何避免服务器受到跨站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"

<TITLEMyNiceSite.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

<H2MyNiceSite.com</H2

<BR

<FORM method="post"action="page2.asp" onsubmit="return checkForm()
展开更多 50%)
分享

猜你喜欢

跨站Script攻击(三)

ASP
跨站Script攻击(三)

跨站Script攻击(二)

ASP
跨站Script攻击(二)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

跨站Script攻击(一)

ASP
跨站Script攻击(一)

ASP漏洞集-跨站Script攻击和防范

ASP
ASP漏洞集-跨站Script攻击和防范

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

css跨站javascript

Web开发
css跨站javascript

asp+ 如何跨站抓取页面

ASP
asp+ 如何跨站抓取页面

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

IBMP服务器的Linux基本安装和配置

IBMP服务器的Linux基本安装和配置

关于在浏览器中执行*.exe文件的深入探讨!

关于在浏览器中执行*.exe文件的深入探讨!
下拉加载更多内容 ↓