zoukankan      html  css  js  c++  java
  • asp.net mvc 安全测试漏洞 "跨站点请求伪造" 问题解决

    IBM Security Appscan漏洞筛查-跨站请求伪造,该漏洞的产生,有多种情况:

    1.WebApi的跨站请求伪造,需要对WebApi的请求头部做限制(此文不做详细介绍);

    2.MVC Action Post接口的跨站请求伪造,具体解决方案,请查看mvc 当中 [ValidateAntiForgeryToken] 的作用

    3. MVC Action Get接口,例如: 跳转页面,数据查询等接口,使用验证HTTP Referer字段 防止跨站请求伪造攻击。

    具体实现思路

    定义RefererAttribute继承自ActionFilterAttribute,在Action执行之前,进行拦截;

    1. /// <summary>
    2. /// Referer(安全)拦截组件
    3. /// </summary>
    4. public class RefererAttribute : ActionFilterAttribute
    5. {
    6.     private ExcuteMode _customMode;
    7.     /// <summary>默认构造</summary>
    8.     public RefererAttribute(ExcuteMode Mode)
    9.     {
    10.         _customMode = Mode;
    11.     }
    12.  
    13.     /// <summary>
    14.     /// 安全认证
    15.     /// </summary>
    16.     /// <param name="filterContext"></param>
    17.     public override void OnActionExecuting(ActionExecutingContext filterContext)
    18.     {
    19.         //是否忽略
    20.         if (_customMode == ExcuteMode.Ignore)
    21.         {
    22.             return;
    23.         }
    24.         var request = filterContext.HttpContext.Request;
    25.  
    26.         if (request.Headers.Get("Referer").IndexOf(Config.GetValue("WebUrl")) > -1
    27.             || request.Headers.Get("Referer").IndexOf(Config.GetValue("NwWebUrl")) > -1
    28.             )
    29.         {
    30.             return;
    31.         }
    32.         else
    33.         {
    34.             throw new Exception("跨域防伪攻击:" + request.Headers.Get("Referer"));
    35.         }
    36.     }
    37. }

    在Controller层增加特性,则所有Action在执行之前都会进行拦截。

    参考:

    IBM Security Appscan漏洞--跨站点请求伪造

  • 相关阅读:
    Unity接入九游SDK学习与踩坑
    Linux系统下实现Tomcat的安装和项目的部署:
    mac查看端口占用情况并结束进程
    BootStrap
    ES6
    JQuery
    CSS 、JavaScript
    HTML
    XML
    数据库连接池&DBUtils
  • 原文地址:https://www.cnblogs.com/xyb0226/p/9384778.html
Copyright © 2011-2022 走看看