asp.net mvc 防止XSS-跨站脚本攻击
2017/9/29 0:41:03
目的:
防止XSS-跨站脚本攻击
因博客项目中的内容是纯html代码,而在前台展示时,也是浏览器对其解析,这样我们保存的是什么样式,展示的也才是什么样式。也正因为我们以纯html展示,浏览器对其解析导致出现了问题,如果内容中恶意加入了类似<script>alert('ok');$.post()</script>的代码,那么我们自已的cookie可能会被盗取,可能会非法执行某些操作。那么这样就需要我们来避免,对纯html代码展示的内容进行过滤。在asp.net mvc中,就是对使用了 @Html.Raw(Model.Content) 的内容进行过滤。
方法:
我们使用“HtmlSanitizer”库来过滤。
在Nuget中搜索并安装“HtmlSanitizer”
使用方法 “model.Content = new Ganss.XSS.HtmlSanitizer().Sanitize(model.Content);”来过滤即可。
HtmlSanitizer的github:https://github.com/mganss/HtmlSanitizer
示例:
在我的博客项目中,只有博客内容字段需要过滤,因此,我只在博客的数据库访问层的“记录新增、修改”和“记录的获取”方法中,对字段进行了过滤。
这样不管Service层如何调用,都不会有问题。
过滤特殊标签:
public class XSSHelper { public static string Sanitize(string html) { var sanitizer = new Ganss.XSS.HtmlSanitizer(); sanitizer.AllowedTags.Add("iframe"); sanitizer.AllowedAttributes.Add("frameborder"); sanitizer.AllowedAttributes.Add("allowfullscreen"); return sanitizer.Sanitize(html); } }
扫码分享
版权说明
作者:SQBER
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
{0}
{5}
{1}
{2}回复
{4}
*昵称:
*邮箱:
个人站点:
*想说的话: