微软AntiXSS防止xss攻击类库
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攻击类库的更多相关文章
- Asp.net防御XSS攻击组件库
一.AntiXss 翻看mvc4高级编程,偶看到作者强烈推荐使用AntiXss防御XSS攻击,收集资料看下. 目前类库已融入到.netframework中,类库主页不再更新. 使用方法:使用Nuget ...
- AntiXSS - 支持Html同时防止XSS攻击
AntiXSS - 支持Html同时防止XSS攻击 跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头.最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编 ...
- MVC WEB安全——XSS攻击防御
XSS(跨站脚本攻击) 描述: 原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的. 类别: 1)被动注入(Passive Inj ...
- web安全-XSS攻击及防御
XSS攻击的原理 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻 ...
- 【前端安全】JavaScript防XSS攻击
什么是XSS XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击.本来缩小应该是CSS,但为了和层叠样式(Cas ...
- XSS攻击防御篇
前言 上篇文章中提到了 XSS 攻击,而且,也从几个方面介绍了 XSS 攻击带来的严重影响.那么,这篇文章中,主要是针对 XSS 攻击做一个基本的防御,看看可以通过几种方式来修复这个特别常见的安全 ...
- 跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击 一.总结 一句话总结:比如用户留言功能,用户留言中写的是网页可执行代码,例如js代码,然后这段代码在可看到这段留言的不同一户的显示上就会 ...
- web安全-xss攻击
web安全问题 xss攻击 1.html标签 html内容的转义 escapeHtml str = str.replace(/&/g,'&'); str = str.replac ...
- 【转载】XSS攻击和sql注入
XSS攻击: https://www.cnblogs.com/dolphinX/p/3391351.html 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻 ...
随机推荐
- 首次运行tensorflow-gpu 1.0 报错 failed to create cublas handle: CUBLAS_STATUS_NOT_INITIALIZED
发现博客: https://blog.csdn.net/u010752600/article/details/79534910 于是找到解决方法. sudo rm -rf ~/.nv/
- Ubuntu下MySQL数据库文件 物理迁移后 出现的问题
参考资料: https://www.cnblogs.com/advocate/archive/2013/11/19/3431606.html 本文要解决的一个问题是数据库文件进行物理迁移时遇到的问题. ...
- php中require_once与include_once的区别
首先include_once仅包含文件一次,如果没有文件,会发出警告,并继续执行. 而require_once也是仅包含文件一次,但是如果程序中没有找到文件,则程序会中止执行.
- BZOJ4883: [Lydsy1705月赛]棋盘上的守卫(最小环套树森林&优化定向问题)
4883: [Lydsy1705月赛]棋盘上的守卫 Time Limit: 3 Sec Memory Limit: 256 MBSubmit: 475 Solved: 259[Submit][St ...
- Linux的发行版之间的联系和区别
转载:https://blog.csdn.net/suixin788/article/details/52555558 联系 Linux的内核源代码和Linux的应用程序都可以自由获得,因此很多公司组 ...
- vue中去掉url地址栏中的#符号
要去掉vue中访问地址中的#符号可以在路由器中设置路由模式为history: export default new Router({ mode:'history', routes: [ { path: ...
- debugfs文件系统
debugfs: https://www.cnblogs.com/helloworldtoyou/p/6281415.html /proc/bus/input/devices /sys/kernel/ ...
- SCSI学习笔记
1. sudo sg_inq --len=36 /dev/sda 使用INQUIRY来查询scsi设备信息
- Oracle XE自带数据库创建的过程
Oracle XE自带数据库如何创建的?XE.sql脚本定义实例究竟是怎样的?阅读下文,您可以找到这些问题的答案. Oracle XE自带数据库是如何创建的呢?这是很多人都提到过的问题,下面就为您详细 ...
- jquery on() bind()绑定的点击事件在js动态新添加的元素生效
方法一:$('.class').on("click",function(){……}); 相当于 $('.class').bind("click",functio ...