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

在项目中添加命名空间引用:using Microsoft.Security.Application;
示例代码:
string xssstr="<script>alert(0);</script>,;<insert into table";
string encodedstr= Encoder.HtmlEncode(xssstr, false); string safestr = Sanitizer.GetSafeHtml(xssstr);
string safestrfrag = Sanitizer.GetSafeHtml(xssstr);
encodedstr = Encoder.HtmlEncode(xssstr, false);
代码运行后,会过滤敏感字符进行转义操作。
使用Sanitizer.GetSafeHtml()会得到过滤过敏感字符的html字符串结果。
参考资料:
博客园榨菜小生文章
csdnVinoYang专栏文章
二、HtmlSanitizer
VS中使用Nuget控制台安装。

HtmlSanitizer依赖AngleShart库
public ISet<string> AllowedAttributes { get; }
public ISet<string> AllowedCssProperties { get; }
public ISet<string> AllowedSchemes { get; }
public ISet<string> AllowedTags { get; }
通过上述属性可以查看Allowed标签信息。
HtmlSanitizer可以添加白名单到标签中,类库简单使用示例如下:
//初始化对象
HtmlSanitizer htmlSanitizer = new HtmlSanitizer();
StringBuilder alltag = new StringBuilder();
foreach (var item in htmlSanitizer.AllowedTags)
{
alltag.Append(item + "\r\n");
} //获得AllowedTags
string allTagsstr = alltag.ToString(); //过滤操作
string filterstr = htmlSanitizer.Sanitize(xssstr);
//添加script到白名单中
htmlSanitizer.AllowedTags.Add("script");
//查看过滤后的结果
filterstr = htmlSanitizer.Sanitize(xssstr);
HtmlSanitizer以标签为基础单进行过滤,上例中script设置白名单后alert不会被过滤。
Asp.net防御XSS攻击组件库的更多相关文章
- 认识与防御XSS攻击
什么是xss攻击? XSS,即(Cross Site Scripting)中文名称为“跨站脚本攻击”.XSS的重点不在于跨站攻击而在于脚本攻击.攻击者可以利用 web应用的漏洞或缺陷之处,向页面注入恶 ...
- WEB安全 - 认识与防御XSS攻击
目录 什么是xss攻击? XSS的危害 XSS攻击分类 xss攻击示例 反射型攻击 - 前端URL参数解析 反射型攻击 - 后端URL参数解析 注入型攻击 - 留言评论 如何规避xss攻击? 总结 什 ...
- ASP.NET防御XSS跨站攻击
目前做ASP.NET项目的时候就有遇到过“用户代码未处理HttpRequestValidationException:从客户端***中检测到有潜在危险的 Request.Form/Request.Qu ...
- 防御XSS攻击的七条原则
本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS ...
- Jsoup代码解读之六-防御XSS攻击
Jsoup代码解读之八-防御XSS攻击 防御XSS攻击的一般原理 cleaner是Jsoup的重要功能之一,我们常用它来进行富文本输入中的XSS防御. 我们知道,XSS攻击的一般方式是,通过在页面输入 ...
- 拦截过滤防御XSS攻击 -- Struts2.3 以及 2.5 的解决方式
使用Struts2框架开发的后台在防御XSS攻击的时候很多方式都不能用,因为Struts2对请求进行的二次封装有区别.以下针对Struts2的XSS攻击进行拦截过滤防御解决: Struts2.3 本方 ...
- 8. 博客系统| 富文本编辑框和基于bs4模块防御xss攻击
views.py @login_required def cn_backend(request): article_list = models.Article.objects.filter(user= ...
- 防御XSS攻击-encode用户输入内容的重要性
一.开场先科普下XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶 ...
- 利用HttpOnly来防御xss攻击
xss的概念就不用多说了,它的危害是极大的,这就意味着一旦你的站点出现xss漏洞,就能够运行随意的js代码,最可怕的是攻击者利用js获取cookie或者session劫持,假设这里面包括了大量敏感信息 ...
随机推荐
- asyncjs,waterfall的使用
waterfall waterfall(tasks, [callback]) (多个函数依次执行,且前一个的输出为后一个的输入) 按顺序依次执行多个函数.每一个函数产生的值,都将传给下一个函数.如果中 ...
- 数据结构1:数据结构与算法C语言版分析概述
本节开始将带领大家系统地学习数据结构,作为一门计算机专业大二学生的必修课程,该课程面对的目标人群为初步具备基本编程能力和编程思想的程序员(大一接触了 C 语言或者 C++).通过系统地学习数据结构,可 ...
- mac 卸载 node
sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*} 除此之外,还需要检查一 ...
- tomcat启动优化
tomcat的最佳实践运行模式 Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化. org.apache.coyote.http11.Http11Protocol ...
- P2903 [USACO08MAR]麻烦的干草打包机The Loathesome Hay Baler
传送门 题目问的是从出发点一直跑到终点的一条链上所有齿轮的速度和 其他的不用考虑 直接搜就好了 注意求的是绝对值之和,不是和的绝对值,所以不用考虑方向问题 注意 N<=1050 数组不要只开10 ...
- newCachedThreadPool无上限线程池使用
1. newCachedThreadPool无上限线程池, 动态根据代码添加线程, 如果线程空闲60秒没有被使用,会自动关闭 package ThreadTest; import java.u ...
- java nio 之MappedByteBuffer
其实掌握MappedByteBuffer并不难,只要记住"三方三法三特性"(我自己总结的,呵呵~~不要扔鸡蛋哦...)这句话就可以轻松搞定!MappedByteBuffer 只是一 ...
- windows logstash配置
E:\logstash-6.2.4\bin目录下新建logstash.conf input { stdin { } } output { stdout { codec=> rubydebug } ...
- Asp.net获取系统信息
[DllImport("kernel32")] public static extern void GlobalMemoryStatus(ref MEMORY_INF ...
- hive on hbase
},{NAME },{NAME } put 'ccc20180710','ooccpp.com','f1:c1','name1' put 'ccc20180710','ooccpp.com','f1: ...