zoukankan      html  css  js  c++  java
  • ASP.NET Core 对XSS攻击字符串的过滤--KYSharpCore.XSSFilter

    在项目安全中,都会涉及到XSS攻击,这里对xss攻击内容进行了过滤方法的封装,做了一个过滤器,方便在项目中使用。

    这里的过滤是指将不合规的敏感字符相关内容直接删除。 比如参数中带有?text=<script>hello</script> world,过滤完,仅会将world传递到action中。

    KYSharpCore.XSSFilter 定义的是一个过滤器,基于Netstand 2.0和MVC。

    1、第一步,从包管理器引入组件KYSharpCore.XSSFilter  (仅限公司内部的包管理器),最新版本 1.1

     2、startup文件中完成过滤器的注入

          public void ConfigureServices(IServiceCollection services)
            {
               
                services.AddControllers(option=> {
                    option.Filters.Add(new XSSFilter());
                });
              
            }

    添加这个过滤器,就会对每个请求提交的所有字符串内容进行过滤处理。

    XSSFilter 提供了2个构造函数,第一个如上面代码,无参构造函数(常用)

    另一个是带参数的

      services.AddControllers(option=> {
                    option.Filters.Add(new XSSFilter(new List<string>() { "/nlp/get2"},true));  //参数是url路径的集合,必须小写。表示这些地址的请求将忽略过滤;第二个参数,bool类型,true表示去除所有html,false表示仅按照默认方式过滤,保留允许的html代码,默认是false
                });

     构造函数如下:

    /// <summary>
            /// xss攻击过滤器构造函数
            /// </summary>
            /// <param name="ignoreUrls">可以指定忽略的路径,比如富文本内容保存页面,统一小写</param
            /// <param name="isNoHtml">是否允许html,若不允许,则去掉全部html</param>
            public XSSFilter(List<string> ignoreUrls,bool isNoHtml=false)
            {
                _ignoreUrls = ignoreUrls;
                _isNoHtml = isNoHtml;
            }

    这样,就简单的完成了xss过滤的整个应用。

    同时,对于应用中某个实体类对象若不需要检测和替换,则可以配置AllowHtml属性,表示允许html。

  • 相关阅读:
    Hibernate查询基本语句 全新时代
    word表格设置背景色方法 全新时代
    Html网页背景渐变色代码 全新时代
    FlashFXP列表参数错误解决方法 全新时代
    svn导出功能不包含.svn文件 全新时代
    JDBC连接SQL Server测试代码及异常 全新时代
    javascript:滚动新闻
    C# 时间函数(几个常用时间,程序运行计时,页面运行计时)
    C#:当把U盘放插入,然后程序自动将U盘的内容复制到本地硬盘
    C#:转换成中文数字
  • 原文地址:https://www.cnblogs.com/fei686868/p/15476871.html
Copyright © 2011-2022 走看看