网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

MVC WEB安全——XSS攻击防御 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

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

 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禁用请求验证。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论