zoukankan      html  css  js  c++  java
  • asp.net core2 mvc 基础教程-- XSS & CSRF

    XSS

    Cross-Site Scripting 跨站脚本攻击:攻击者将客户端脚本注入到其他用户查看的网页中。

    不被信任的数据:

    • HTML input
    • HTTP Headers
    • Query strings
    • Attributes,EXIF 信息

    防止 XSS

    • HTML Encoding:> 变成 &gt;    < 变成 &lt;
    • Razor 默认开启了 HTML Encoding,可以手动关闭
    • 正则表达式
    • 反 XSS 的第三方库
    • 对请求进行验证

    内置的编码器

    • HtmlEncoder
    • JavaScriptEncoder
    • UrlEncoder

    通过 Html.Raw 输出的内容不会被  HTML-encoding:

    <p class="card-text">
        by @Html.Raw(Model.Artist) @@ @Model.ReleaseDate.ToString("yyyy-MM-dd")
    </p>
     

    CSRF

    Cross-Site Reqest Forgery 跨站请求伪造

    image.png

    OWASP 的 CSRF 防范方案

    • Header 验证
    • Synchronizer Token Pattern
    • 服务器发送随机字符串到客户端,客户端下次请求时需要把字符串原封不动返回去
    • Double Submit Cookie
    • 服务器发送随机字符串到客户端,客户端返回的请求和 Cookie 里面都要包含原封不动的字符串

    ASP.NET Core:Synchronizer Token Pattern

    Docs:Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core

    • [ValidateAntiForgeryToken]:对单个 Action 启用
    • [AutoValidateAntiForgeryToken]:对所有 POST 启用
    • [IgnoreAntiForgeryToken]:关闭单个 Action 的验证

    启用后生成的 token:

    image.png

    在 Startup 里面配置 AntiForgeryToken:

    services.AddAntiforgery(options =>
    {
        // Set Cookie properties using CookieBuilder properties†.
        options.FormFieldName = "AntiforgeryFieldname";
        options.HeaderName = "X-CSRF-TOKEN-HEADERNAME";
        options.SuppressXFrameOptionsHeader = false;
    });
    services.AddMvc(options =>
    {
        options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
    });
  • 相关阅读:
    详解 ES6 Modules
    es6常用基础合集
    透彻掌握Promise的使用,读这篇就够了
    Initialization of deep networks
    Logistic Regression and Gradient Descent
    一定要在年轻的时候读最难的书
    DEEP LEARNING WITH STRUCTURE
    我和NLP的故事(转载)
    Common Pitfalls In Machine Learning Projects
    C++中debug和release的区别 . 转载
  • 原文地址:https://www.cnblogs.com/cqqinjie/p/13303046.html
Copyright © 2011-2022 走看看