AntiXSS,由微软推出的用于防止XSS攻击的一个类库,可实现输入白名单机制和输出转义。

AntiXSS最新版的下载地址:http://wpl.codeplex.com

下载安装之后,安装目录下有以下文件:
AntiXSS.chm:

包括类库的操作手册参数说明。

AntiXSSLibrary.dll:

包含Antixss,Encoder类(输出转义),AntiXSS类中的方法已经过时,建议使用Encoder类中相同的方法。
HtmlSanitizationLibrary.dll:

包含Sanitizer类(输入白名单),只包含GetSafeString和GetSafeHtmlFragment两个方法。

使用时在工程内添加引用HtmlSanitizationLibrary.dll 和AntiXSSLibrary.dll
导入命名空间using Microsoft.Security.Application;

我们需要决定使用哪个编码函数。接下来的表格将帮助你决定使用哪个编码函数:

编码函数

应该使用的场景

示例/模式

HtmlEncode

不可信的输入被用作html输出,被分配给一个html属性除外

<a href="http://www.contoso.com">Click Here [Untrusted input]</a>

HtmlAttributeEncode

不可信的输入作为一个html属性

<hr noshade size=[Untrusted input]>

JavaScriptEncode

不可信的输入作为一个javascript上下文

<script type="text/javascript">

[Untrusted input]

</script>

UrlEncode

不可信的输入作为一个url(例如作为一个查询参数的值)

<a href="http://search.msn.com/results.aspx?

q=[Untrusted-input]">Click Here!</a>

VisualBasicScriptEncode

不可信的输入作为一个visual basic上下文

<script type="text/vbscript" language="vbscript">

[Untrusted input]

</script>

XmlEncode

不可信的输入作为一个xml输出,除了把它作为一个xml节点的属性

<xml_tag>[Untrusted input]</xml_tag>

XmlAttributeEncode

不可信的输入作为一个xml的属性

<xml_tag attribute=[Untrusted input]>Some Text</xml_tag>

在将 HTML 数据保存到数据库之前,使用 AntiXSS Sanitizer 对象(该库是一个单独的下载文件,将在下文中介绍)调用
GetSafeHtml 或 GetSafeHtmlFragment;不要在保存数据之前对数据进行编码。AntiXss.GetSafeHtmlFragment(html)方法,这个方法会替换掉html里的危险字符。 确保所有输出内容都经过
HTML 编码。

AntiXss类库是一款预防注入攻击的开源类库,它通过白名单机制进行内容编码。目前它支持这些输入类型:XML,HTML,QueryString,HTMLFormURLEncode,Ldap,JavaScript。在日常的开发中我们并不会安全编码像Ldap或JavaScript这样的输入类型,大多都是对XML,QueryString或Form
URL进行安全编码。下面是个安全编码XML文件的小例子:

微软AntiXSS防止xss攻击类库的更多相关文章

  1. Asp.net防御XSS攻击组件库

    一.AntiXss 翻看mvc4高级编程,偶看到作者强烈推荐使用AntiXss防御XSS攻击,收集资料看下. 目前类库已融入到.netframework中,类库主页不再更新. 使用方法:使用Nuget ...

  2. AntiXSS - 支持Html同时防止XSS攻击

    AntiXSS - 支持Html同时防止XSS攻击 跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头.最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编 ...

  3. MVC WEB安全——XSS攻击防御

    XSS(跨站脚本攻击) 描述: 原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的. 类别: 1)被动注入(Passive Inj ...

  4. web安全-XSS攻击及防御

    XSS攻击的原理 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻 ...

  5. 【前端安全】JavaScript防XSS攻击

    什么是XSS XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击.本来缩小应该是CSS,但为了和层叠样式(Cas ...

  6. XSS攻击防御篇

    前言   上篇文章中提到了 XSS 攻击,而且,也从几个方面介绍了 XSS 攻击带来的严重影响.那么,这篇文章中,主要是针对 XSS 攻击做一个基本的防御,看看可以通过几种方式来修复这个特别常见的安全 ...

  7. 跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

    跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击 一.总结 一句话总结:比如用户留言功能,用户留言中写的是网页可执行代码,例如js代码,然后这段代码在可看到这段留言的不同一户的显示上就会 ...

  8. web安全-xss攻击

    web安全问题 xss攻击 1.html标签 html内容的转义 escapeHtml str = str.replace(/&/g,'&amp'); str = str.replac ...

  9. 【转载】XSS攻击和sql注入

    XSS攻击: https://www.cnblogs.com/dolphinX/p/3391351.html 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻 ...

随机推荐

  1. centos7 中将执行文件python链接为python3后 如何保证 yum 功能不受影响

    1.  查看  /usr/bin  中  python 执行文件的 链接情况 2.  设置   python  命令的可执行文件  链接为    python3 3.  此时 , yum  文件中的p ...

  2. BZOJ2938: [Poi2000]病毒(AC自动机)

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1678  Solved: 849[Submit][Status][D ...

  3. BZOJ1835: [ZJOI2010]base 基站选址【线段树优化DP】

    Description 有N个村庄坐落在一条直线上,第i(i>1)个村庄距离第1个村庄的距离为Di.需要在这些村庄中建立不超过K个通讯基站,在第i个村庄建立基站的费用为Ci.如果在距离第i个村庄 ...

  4. setup factory 9制作VB程序安装包

    setup factory 使用起来很简单你可以如下:1.你把你刚编译出来的exe和相关的资源文件复制到某一空目录下.把exe文件添加到setup factory里之后,在列表里右键,属性里面可以设置 ...

  5. 去掉PowerDesigner生成SQL脚本中字段名带的引号

    使用PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号.其实加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有“”,会按照ORACL ...

  6. jquery类的创建方式及关键字new的原理

    一.由jQuery创建类引发的问题 在用jQuery选择器时候,可以通过下面两种方式获取元素,并得到一个jQuery对象. var d1 = jQuery('#demo01'); var d2 = n ...

  7. php中隐形字符65279(utf-8的BOM头)问题和fwrite写入文件bom头导致的乱码问题解决

     php中隐形字符65279(utf-8的BOM头)问题 今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下这个65279字符是php用来标记文件是utf-8编码的,输出 ...

  8. Uploadify所有配置说明,常见bug问题分析

    引言 之前写过一篇使用swfupload上传图片的文章:周末大放送网站图片上传,水印,预览,截图,这里分析一下,当时使用uploadify上传,无法获取上传后,图片路径的问题.当时没有测试没有成功,一 ...

  9. 编译安装php-5.4.44

    编译安装php-5.4.44 1. 首先,安装必要的库文件,一面编译被打断: yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-de ...

  10. TreeSet函数

    TreeSet类的排序问题   TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object ob ...