Microsoft Anti-XSS库

Microsoft提供了一个免费的Anti-XSS库,这个库扩展了内置的编码方法,并为HTML特性、JavaScript、XML等提供附加的输出类型。每个输出类型(或上下文)的编码规则是不同的,由您来为内容选择合适的输出上下文。Anti-XSS库以"白名单"为工作方式,使用超过12种语言来定义一个有效的字符列表(与"黑名单"方法相比,黑名单定义了一个无效的字符、代码和命令列表)。由于Anti-XSS库包含了(已经内置到架构中)最新、更健壮的HtmlEncode和UrlEncode函数的版本,因此应该使用Anti-XSS版本。

注意:可以从http://www.codeplex.com/antixss网站下载Anti-XSS库,如果您不想要检查代码并自己编译它,那么这个名为codeplex的网站还包含二进制下载的链接。

表3-2显示了Anti-XSS库支持的编码方式。

表3-2  Microsoft Anti-XSS库支持的编码方式

   

    

HtmlEncode

当不受信任的输入被指派到HTML

输出时使用该编码方式,除了把该输

入指派到HTML特性情况之外

HtmlAttributeEncode

当不受信任的输入被指派到HTML

特性(例如,id、name、width 或height)

时使用该编码方式

JavaScriptEncode

当在JavaScript中使用不受信任的输入

时使用该编码方式

UrlEncode

当使用不受信任的输入来产生一个UR

L(或者在一个URL内使用)时使用该编码方式

VisualBasicScriptEncode

当在VBScript中使用不受信任的输入时

使用该编码方式

XmlEncode

当不受信任的输入被指派到XML输出,

除非是指派到XML特性时使用该编码方式

XmlAttributeEncode

当不受信任的输入被指派到XML特

性时使用该编码方式

安全的运行时引擎

Anti-XSS库还包括安全运行时引擎(Security Run-time Engine,SRE)和HTTP模块,SRE和HTTP模块通过XSS库自动和主动编码数据来保护您的ASP.NET应用程序,其工作方式是分析Web应用程序和检查每一个ASP.NET Web控件或继承自这些控件派生的控件,通过antixssmodule.config文件指定应用到该控件属性的编码方式来配置模块。

SRE包含一个称为SRE Configuration Generation(SRE配置生成器)的实用工具,如图3-4所示。此实用工具分析Web应用程序和应用程序中使用的控件。由此可见,SRE决定每一个属性的编码方法,并产生一个称为antixssmodule.config的配置文件。由于此生成器分析编译后的Web站点,因此必须使用Visual Studio的Web应用程序项目,而不是使用Visual Studio的Web站点功能。

 
图3-4  SRE的配置生成器工具

通过以下几个步骤来启用SRE:

(1) 使用配置生成器工具分析Web应用程序项目,并生成一个配置文件,该配置文件必须被复制到Web应用程序根目录中。此配置工具检查在编译Web应用程序时产生的程序集。如果您使用的是Visual Studio的Web站点方式,因为没有编译阶段,所以不产生程序集。在这种情况下,可以使用提供的默认配置文件,但只能提供对标准的ASP.NET控件的保护,不能保护任何自定义的控件。

(2) 把SER运行时DLL从Security Runtime Engine\Module文件夹中复制到自己的应用程序的\bin文件夹下。

(3) 通过编辑web.config文件来启用SER运行时。如果您正以经典的ASP.NET模式使用IIS 6或者IIS 7,那么把下面内容添加到system.web节的<httpModules>列表中。如果您使用的是集成管道模式的IIS 7,那么把下面的内容添加到system.webmodules节的<modules>列表中。

 
 
  1. <add name="AntiXssModule" type=  
  2. "Microsoft.Security.Application.SecurityRuntimeEngine.AntiXssModule"/> 
通过配置文件可以把一些页面或者个别的控件从SRE中排除出去,或者在代码中把SupressAntiXssEncoding特性应用到页面或者控件,如下所示:
 
 
  1. [Microsoft.Security.Application.SecurityRuntimeEngine  
  2. .SupressAntiXssEncoding()]  
  3. public partial class _Default : System.Web.UI.Page  
  4. {  
  5. protected void Page_Load(object sender, EventArgs e)  
  6. {  
  7. ...  
  8. }  
  9. }  
警告:SRE不能保护任何通过Response.Write方法或使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值