跨站Script攻击(三)

2016-01-29 18:02 4 1 收藏

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

【 tulaoshi.com - ASP 】

  跨站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()

来源:http://www.tulaoshi.com/n/20160129/1504053.html

延伸阅读
--------------关闭指定程序----------
标签: Web开发
第三课终于和大家见面了, 大家要感谢 Actions 的辛勤劳动啊, 好好利用论坛给大家提供的资源和教程, 希望大家一起学习提高 :D 大家有什么意见, 建议或者想法, 可以到本版的教程问答区 或 站务管理版的 建议或意见 去发表, 我们会及时给您反馈 :) 下面是今天的学习重点...
标签: 产后恢复
产后恢复 有多少“错”可以重来 产后恢复包含的主要方面有产后会阴部位的私处细胞活力因子护理以及产后的体形恢复、产后的子宫恢复和产后的心理恢复,女性在恢复期间一定要注意营养饮食的均衡。关于产后恢复的方式我们听了不少,其中也有不少误区。 一、关于产后束缚带该不该绑 不建议绑束缚带。有些说产后束缚...
炎热的夏季,空调给人们带来了阵阵清凉,同时也带来了让人困扰的空调病。有人说自己有“空调病”,其实是误解了这个“病”。实际上“空调病”并不是指自己对空调吃不消,会让身体产生病状反应,而是指过长时间吹空调造成的身体机能衰退。 空调病的主要症状因各人的适应能力不同而有差异。一般表现为畏冷不适、疲乏无力、四肢肌肉关节酸痛、...
标签: Web开发
WML Script是属于无限应用协议WAP应用层的一部分,使用它可以向WML卡片组和卡片中添加客户端的处理逻辑,目前最新的版本是1.1版。WML Script1.1是在欧洲计算机制造商协议会制定的ECMAScript脚本语言的基础上,经过修改和优化而指定的。它能够更好的支持诸如移动电话类的乍带宽通信设备,在WML编程中使用WML Script可以有效的增强客户端应用的...

经验教程

48

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部