MVC WEB安全——XSS攻击防御

 

XSS(跨站脚本攻击)

描述:

原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的。

类别

1)被动注入(Passive Injection)。用户将恶意代码输入到表单中,保存到数据库,然后再显示在网站上;

2)主动注入(Active Injection)。用户将恶意代码输入到文本框中并将输入的内容立刻在屏幕上显示出来。

XSS攻击在Web上排名第一,遗憾的是,导致XSS猖獗的原因是Web开发人员不熟悉这种攻击(好遗憾哦。。。)。

避免:

1)对所有内容都进行HTML编码;

      Razor引擎默认对输出内容进行HTML编码。如:@Model.FirstName。

      如果非Razor引擎,则如:

<% Html.Encode(Model.FirstName) %>

2)使用Html.AttributeEncode和Url.Encode;

      

<a href=”<%= Url.Action(“Index”,"home”,new { name = ViewData[“name”]})%>">点击我</a>

       将name改为:

"></a><script src = “http://abcd.evil.com”></script><a href= "
    则攻击成功。 

      编码1:

<a href=”<%= Url.Action(“Index”,”home”,new { name = Html.AttributeEncode(ViewData[“name”])})%>”>点击我</a>

      编码2:

<a href=”<%= Url.Encode(Url.Action(“Index”,”home”,new { name = ViewData[“name”] }))%>”>点击我</a>

3)对Ajax.JavaScriptStringEncode进行JavaScript编码。

      如

var searchItem = “@Html.Raw(Ajax. JavaScriptStringEncode(Model))”;

4)将AntiXss库作为ASP.NET的默认编码器。

反模式:

1)使用

Html.Raw(Model.ReturnUrl)
绕过编码;

2)使用

[AllowHtml]
对模型的属性禁用请求验证;

3)使用

[ValidateInput(false)]
对Controller或者Action禁用请求验证。

转载于:https://www.cnblogs.com/pengzhen/p/3801140.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值