首页学院源码字体下载软件电脑书| 素材图片模版壁纸酷站图标笔刷纹理|小游戏博客QQ表情投票计数器JoyRssMail
动态网站制作指南
首页|网络编程|站长之家|网页制作|图形图象|操作系统|冲浪宝典|软件教学|网络办公|手机学院|邮件系统|网络安全|认证考试
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

跨站Script攻击(三)


发表日期:2000-8-21 |


跨站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">

<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" onsubmit="return checkForm();">

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所采用的这种对输入的字符进行限定的办法要比单独的采用过滤特殊字符要好得多。采用了这些措施后你就能让那
些参观你网站的客户在访问你网站时受到保护。

二、免受黑客攻击我们浏览器方法:

  当你在网上漫游的时侯,怎样来避免受到攻击呢?微软和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中函数调用对参数的影响
·关于文摘插件提交表单的开发
·ASP取出HTML里面的图片地址的函数
·ASP编程代码:隐藏图片的真实地址
·ASP分页函数、分页导航
·NT4的ODBC与SQL7相连,不支持中文?
·ASP程序代码执行时间统计类
·ASP缓存类含调用演示
·数据库聊天室的“无刷新”技术要点
·ASP中Cookie使用指南

浏览全部跨站Script攻击的内容 PS笔刷下载 39种不同语言在线翻译
文章搜索服务





邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<ASP技巧>的内容
Powered by JoyRssMail

网络编程文章分类

本月文章推荐
. ASP日期和时间函数示例.
. Asp:Cookies应用指南,详细代码及教.
. 从手工注入看防御之Access.
. ADO如何建立修改刪除资料表呢?(B.
. ASP与JSP的比较(一) .
. 将ASP纪录集输出成n列的的表格形式.
. asp模板引擎.
. 利用 WSH 作定时工作流程.
. 教你一次下载网页中的所有资源.
. ASP调用带参数存储过程的几种方式.
. ASP绝对保证上传图片安全的图片检测.
. 如何用ASP将一大段文字中的HTML的标.
. 5个实用的ASP网站功能(GIB5).
. ASP中轻松实现变量名-值变换.
. ASP常用函数:BHTML().
. 用ASP文件实现CPU的使用率始终保持.
. asp+文件上传增强实例.
. 一个asp快速字符串连接类.
. ASP模仿asp.net的DataGrid.
. 数据分页方法新思路,速度非常快!.
. 组件对象开发Web应用的实例分析.
. 巧用in关键字实现数据的批量删除.
. 巧用ISAPI_Rewrite规则写IIS防盗链.
. 如何用asp把sqlserver数据转换为ex.
. 纯猝使用VBScript来实现加密.
. 用ASP打开远端MDB文件.
. 使用ffmpeg.exe转换flv格式的ASP函.
. 缓存的应用,调用速度要比每次都要从.
. ASP伪静态页简单.
. 网站图片扫描类.
  最新网站源码 最新软件下载
2009-7-4 84网址站 v4.10
2009-7-4 仿webmasterhome 网站收录查询 v
2009-7-4 NOCC v1.8
2009-7-4 易和阳光购物商城 v1.4 Access F
2009-7-4 OK伯乐招聘求职系统
2009-7-3 MyBB v1.4.8
2009-7-3 miniBB v2.3
2009-7-3 Modoer多功能点评系统 v1.1.0 Bu
2009-7-3 Modoer多功能点评系统 v1.1.0 Bu
2009-4-4 SharePoint Designer 2007
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
  发表评论
姓 名: 验证码: [ 查看评论 ]
内 容:
 
站长工具:Google PR查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|公积金贷款计算|购房银行按揭利率计算|实时汇率查询换算|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号