精华内容
下载资源
问答
  • 萨米网 一个.net标准库,用于执行来自不受信任来源HTML的可配置清除。 换句话说,它是一个API,可以帮助您确保客户端不会在其提供给个人资料,注释等HTML中提供恶意的货物代码,这些代码会持久保存在服务器上。 ...
  • SpringBoot拦截XSS攻击

    2021-03-16 17:20:17
    --XSS 安全过滤--> <dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-core</artifactId> <version>2.0.9-GA</version> </dependency&...
    <!--XSS 安全过滤-->
    		<dependency>
    			<groupId>net.dreamlu</groupId>
    			<artifactId>mica-core</artifactId>
    			<version>2.0.9-GA</version>
    		</dependency>
    		<dependency>
    			<groupId>net.dreamlu</groupId>
    			<artifactId>mica-xss</artifactId>
    			<version>2.0.9-GA</version>
    		</dependency>
    
    展开全文
  • laravel防止XSS攻击(中间件使用)

    千次阅读 2019-03-14 12:48:29
    首先,创建中间件: php artisan make:middleware XSS 其次,修改app/Http/Middleware/XSS.php文件: XSS.php namespace App\Http\Middleware;...class XSS { public function handle(Re...

    首先,创建中间件:
    php artisan make:middleware XSS

    其次,修改app/Http/Middleware/XSS.php文件:

    XSS.php
    namespace App\Http\Middleware;
    use Closure;
    use Illuminate\Http\Request;
    class XSS
    {
        public function handle(Request $request, Closure$next)
        {
            $input = $request->all();
            array_walk_recursive($input,function(&$input) {
                $input = strip_tags($input);
            });
            $request->merge($input);
            return $next($request);
        }
    }
    

    然后,必须在app/Http/Kernel.php文件中注册中间件:

    Kernel.php
    class Kernel extends HttpKernel
    {
        ....
        protected $routeMiddleware = [
            'auth' => \App\Http\Middleware\Authenticate::class,
            ....
            'XSS' => \App\Http\Middleware\XSS::class,
        ];
    }
    

    最后,在路由中增加**‘middleware’ => [‘XSS’]**:

    Route::group(['namespace'=>'Home','middleware' => ['XSS']],function(){  Route::post('customValiPost','CustomValDemoController@customValiPost');
    });
    
    展开全文
  • :Japanese_secret_button: 反XSS “跨站点脚本(XSS)是一种通常在Web应用程序中发现的计算机安全漏洞。XSS使攻击者能够将客户端脚本注入到其他用户查看的网页中。跨站点脚本漏洞可能被攻击者用来绕过相同原产地...
  • 防止XSS攻击解决办法

    2018-01-20 14:44:32
    防止XSS攻击简单实用的解决办法,直接复制两个过滤器,然后配置web.xml即可实现
  • 翻看mvc4高级编程,偶看到作者强烈推荐使用AntiXss防御XSS攻击,收集资料看下。 目前类库已融入到.netframework中,类库主页不再更新。 使用方法:使用Nuget,搜索AntiXss 在项目中添加命名空间引用:using ...

    一、AntiXss

    翻看mvc4高级编程,偶看到作者强烈推荐使用AntiXss防御XSS攻击,收集资料看下。

    目前类库已融入到.netframework中,类库主页不再更新。

    使用方法:使用Nuget,搜索AntiXss

    在项目中添加命名空间引用:using Microsoft.Security.Application;

     示例代码:

     string xssstr="<script>alert(0);</script>,;<insert into table";
                string encodedstr= Encoder.HtmlEncode(xssstr, false);
                
                string safestr = Sanitizer.GetSafeHtml(xssstr);
                string safestrfrag = Sanitizer.GetSafeHtml(xssstr);
                encodedstr = Encoder.HtmlEncode(xssstr, false);
    View Code

    代码运行后,会过滤敏感字符进行转义操作。

    使用Sanitizer.GetSafeHtml()会得到过滤过敏感字符的html字符串结果。

     参考资料:

      类库官网

      博客园榨菜小生文章

      csdnVinoYang专栏文章

    二、HtmlSanitizer

      VS中使用Nuget控制台安装。

      

      HtmlSanitizer依赖AngleShart库

           public ISet<string> AllowedAttributes { get; }
            public ISet<string> AllowedCssProperties { get; }
            public ISet<string> AllowedSchemes { get; }
            public ISet<string> AllowedTags { get; } 

      通过上述属性可以查看Allowed标签信息。

      HtmlSanitizer可以添加白名单到标签中,类库简单使用示例如下:

      

                //初始化对象
                HtmlSanitizer htmlSanitizer = new HtmlSanitizer();          
                StringBuilder alltag = new StringBuilder();
                foreach (var item in htmlSanitizer.AllowedTags)
                {
                    alltag.Append(item + "\r\n");
                }
    
                //获得AllowedTags
                string allTagsstr = alltag.ToString();
    
                //过滤操作
                string filterstr = htmlSanitizer.Sanitize(xssstr);
                //添加script到白名单中
                htmlSanitizer.AllowedTags.Add("script");
                //查看过滤后的结果
                filterstr = htmlSanitizer.Sanitize(xssstr);

      HtmlSanitizer以标签为基础单进行过滤,上例中script设置白名单后alert不会被过滤。

     

    转载于:https://www.cnblogs.com/bro-ma/p/6777800.html

    展开全文
  • 内容安全策略(CSP)是一个增加的安全层,可帮助检测和缓解某些类型的攻击,包括跨站点脚本(XSS)和数据注入攻击。这些攻击用于从数据窃取到站点破坏或恶意软件分发的所有内容(深入CSP) 简而言之,CSP是网页...

    内容安全策略(CSP)是一个增加的安全层,可帮助检测和缓解某些类型的攻击,包括跨站点脚本(XSS)和数据注入攻击。这些攻击用于从数据窃取到站点破坏或恶意软件分发的所有内容(深入CSP

    简而言之,CSP是网页控制允许加载哪些资源的一种方式。例如,页面可以显式声明允许从中加载JavaScript,CSS和图像资源。这有助于防止跨站点脚本(XSS)攻击等问题。

    它也可用于限制协议,例如限制通过HTTPS加载的内容。CSP通过 Content-Security-Policy HTTP响应中的标头实现。

    启用CSP,您需要配置Web服务器以返回Content-Security-PolicyHTTP标头。那么在这篇文章中,我们将要尝试将CSP添加到ASP.NET Core应用程序中。

    app.Use(async (ctx, next) =>
                {
                    ctx.Response.Headers.Add("Content-Security-Policy",
                                "default-src 'self'; report-uri /cspreport");
                    await next();
                });
    

      在Home/Index中引入cdn文件,然后我们启动项目,看看会发生什么!

    运行并观察错误。加载页面时,浏览器拒绝从远程源加载。

     

     所以我们可以组织CSP来控制我们的白名单,在配置当中需要填写来源以及内容,以下是常用限制的选项。

    来源:

    *: 允许任何网址。
    ‘self’: 允许所提供页面的来源。请注意,单引号是必需的。
    ‘none’: 不允许任何来源。请注意,单引号是必需的。
    Host: 允许指定的互联网主机(按名称或IP地址)。通配符(星号字符)可用于包括所有子域,例如http://*.foo.comunsafe-line’: 允许内联脚本
    ‘nonce-[base64-value]’: 允许具有特定nonce的内联脚本(使用一次的数字)。对于每个HTTP请求/响应,应该对nonce进行加密和唯一。

     指令:

    script-src:定义有效的JavaScript源
    style-src:定义样式表的有效来源
    img-src:定义有效的图像源
    connect-src:定义可以进行AJAX调用的有效源
    font-src:定义有效的字体来源
    object-src:定义<object>,<embed>和<applet>元素的有效源
    media-src:定义有效的音频和视频源
    form-action:定义可用作HTML <form>操作的有效源。
    default-src:指定加载内容的默认策略

    我们可以在可重用的中间件中封装构建和添加CSP头。以下是一个让您入门的示例。你可以根据需要扩展它。首先,创建一个用于保存源的类。

    public class CspOptions
        {
            public List<string> Defaults { get; set; } = new List<string>();
            public List<string> Scripts { get; set; } = new List<string>();
            public List<string> Styles { get; set; } = new List<string>();
            public List<string> Images { get; set; } = new List<string>();
            public List<string> Fonts { get; set; } = new List<string>();
            public List<string> Media { get; set; } = new List<string>();
        }

     开发一个中间件一定是需要一个构造器的,这将用于.net core 的注入到运行环境中。

    public sealed class CspOptionsBuilder  
     {  
         private readonly CspOptions options = new CspOptions();  
           
         internal CspOptionsBuilder() { }  
      
         public CspDirectiveBuilder Defaults { get; set; } = new CspDirectiveBuilder();  
         public CspDirectiveBuilder Scripts { get; set; } = new CspDirectiveBuilder();  
         public CspDirectiveBuilder Styles { get; set; } = new CspDirectiveBuilder();  
         public CspDirectiveBuilder Images { get; set; } = new CspDirectiveBuilder();  
         public CspDirectiveBuilder Fonts { get; set; } = new CspDirectiveBuilder();  
         public CspDirectiveBuilder Media { get; set; } = new CspDirectiveBuilder();  
      
         internal CspOptions Build()  
         {  
             this.options.Defaults = this.Defaults.Sources;  
             this.options.Scripts = this.Scripts.Sources;  
             this.options.Styles = this.Styles.Sources;  
             this.options.Images = this.Images.Sources;  
             this.options.Fonts = this.Fonts.Sources;  
             this.options.Media = this.Media.Sources;  
             return this.options;  
         }  
     }  
      
     public sealed class CspDirectiveBuilder  
     {  
         internal CspDirectiveBuilder() { }  
      
         internal List<string> Sources { get; set; } = new List<string>();  
      
         public CspDirectiveBuilder AllowSelf() => Allow("'self'");  
         public CspDirectiveBuilder AllowNone() => Allow("none");  
         public CspDirectiveBuilder AllowAny() => Allow("*");  
      
         public CspDirectiveBuilder Allow(string source)  
         {  
             this.Sources.Add(source);  
             return this;  
         }  
     }  

     好了,我们创建一个中间件。

    namespace XSSDefenses.XSSDefenses.MiddlerWare
    {
        public sealed class CspOptionMiddlerWare
        {
            private const string HEADER = "Content-Security-Policy";
            private readonly RequestDelegate next;
            private readonly CspOptions options;
    
            public CspOptionMiddlerWare(
                RequestDelegate next, CspOptions options)
            {
                this.next = next;
                this.options = options;
            }
    
            public async Task Invoke(HttpContext context)
            {
                context.Response.Headers.Add(HEADER, GetHeaderValue());
                await this.next(context);
            }
    
            private string GetHeaderValue()
            {
                var value = "";
                value += GetDirective("default-src", this.options.Defaults);
                value += GetDirective("script-src", this.options.Scripts);
                value += GetDirective("style-src", this.options.Styles);
                value += GetDirective("img-src", this.options.Images);
                value += GetDirective("font-src", this.options.Fonts);
                value += GetDirective("media-src", this.options.Media);
                return value;
            }
            private string GetDirective(string directive, List<string> sources)
                => sources.Count > 0 ? $"{directive} {string.Join(" ", sources)}; " : "";
        }
    }

     以及设置它的扩展方法。

    namespace XSSDefenses.XSSDefenses.Extensions
    {
        public static class CspMiddlewareExtensions
        {
            public static IApplicationBuilder UseCsp(
                 this IApplicationBuilder app, Action<CspOptionsBuilder> builder)
            {
                var newBuilder = new CspOptionsBuilder();
                builder(newBuilder);
    
                var options = newBuilder.Build();
                return app.UseMiddleware<CspOptionMiddlerWare>(options);
            }
        }
    }
    

    我们现在可以在Startup类中配置中间件。

    app.UseCsp(builder =>
                {
                    builder.Styles.AllowSelf()
                    .Allow(@"https://ajax.aspnetcdn.com/");
                });

     启动发现,观察网络资源。浏览器已经允许本地和远程资源。

     

    展开全文
  • 为解决Web网站跨站脚本攻击(XSS)问题,通过对XSS漏洞特征及过滤方式的分析,提出了通过过滤规则集转换XSS代码并用自动爬虫程序实现漏洞代码的自动注入和可用性检验的XSS漏洞挖掘技术,依此方法可以获取XSS漏洞...
  • 在开发Java Web程序时,为了防止XSS的JavaScript攻击, 需要对用户输入转义,使JavaScript脚本不能执行. 在前端可以通过获取<div>的innerHTML属性来获取转义内容,但是在服务端如何进行转义?因为客户端是可以绕...
  • 最近看到有大佬利用goby漏洞制攻击者,特意复现下,原理就是通过XSS进行交互,调用Node.js函数exec执行命令,最新版本已经进行了修复,如果还在使用低版本还是尽快升级吧。 1.测试环境 goby-win-x64-1.8.255 ...
  • 基于Antisamy项目实现防XSS攻击

    万次阅读 2014-11-06 17:23:53
    最近项目上线,请第三方公司进行了一次渗透性测试,被发现存在多处XSS攻击。由于我们对于URL的Get请求已经通过URLFilter进行了特殊字符过滤,Get请求的漏洞已经被封堵,但是对于Post请求考虑到我们项目存在表单提交...
  • XSS-labs Level 19 Flash XSS

    千次阅读 2019-11-23 16:49:15
    level 19 flash xss 查看前端代码,发现访问swf的时候在传参 接下来直接访问这个链接。 这里可以看到flash里面提示sifr.js是没有定义的,这不仅仅是个图片。。。 需要对flash进行编译查看源码,使用的是jpexs,...
  • 因此,这是每个人都应该知道,并且能够利用下面列举的7种XSS漏洞。在这里,我们建立一个网页来显示它们的变化(单引号或双引号)以进行训练:在源代码的开头,有一个HTML注释,其中包含用于触发每种情况的所有参数,...
  • XSS语句

    千次阅读 2019-08-29 16:33:04
    过滤了圆括号(),引号`. 可以执行html转义字符. <svg><script>alert(1)   所有的类标签都不能用了   ("display_errors", 0); $str = strtolower(@$_POST["keyword"]); $str = preg_...
  • 文章目录XSS的攻击相关资料整理跨站脚本攻击(XSS)XSS 简介XSS 危害XSS 原理XSS 分类XSS 防御总结XSS 问答参考资料 跨站脚本攻击(XSS) XSS 简介 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会...
  • Java知识体系最强总结(2021版)

    万次阅读 多人点赞 2019-12-18 10:09:56
    大部分已完成 待整理: Java开发必会的编译知识(附支持对Lambda进行编译的工具) 一文读懂什么是Java中的自动拆装箱 Java的枚举类型用法介绍 类、枚举、接口、数组、可变参数 泛型、序列化 序号 内容 链接地址 ...
  • XSS攻击流程 1、攻击者将恶意代码注入到服务器中 2、用户在没有防备的情况下访问服务器 3、服务器将含有恶意代码的网页响应给客户端 4、在客户端浏览器中触发恶意的JS代码XSS危害 1、盗取各种用户账号 2、窃取用户...
  • XSS原理&dvwa&xssvalidator使用

    千次阅读 2020-08-07 10:04:06
    渗透COP之XSS原理&测试案例 1.什么是XSS 跨站脚本(Cross Site Scripting,XSS)是一种经常出现在web应用程序中的计算机安全漏洞。攻击者利用网站漏洞把恶意的代码注入到网页之中。当其他用户浏览到这些网页...
  • XSSxss-labs-level19

    2021-02-24 21:53:44
    文章目录0x01 XSS-Labs0x02 实验工具0x03 实验环境0x04 实验步骤0x05 实验分析0x06 参考链接 0x01 XSS-Labs   XSS(跨站脚本攻击)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页或访问该页面中的...
  • 面试问题如何预防xss攻击

    万次阅读 多人点赞 2018-07-11 18:37:40
    1. XSS攻击原理XSS原称为CSS(Cross-Site Scripting),因为和层叠样式表(Cascading Style Sheets)重名,所以改称为XSS(X一般有未知的含义,还有扩展的含义)。XSS攻击涉及到三方:攻击者,用户,web server。用户是...
  • 什么是XSS XSS(cross site script)或者说跨站脚本是一种web应用程序的漏洞,恶意攻击者往web页面里插入恶意script代码,当用户浏览该页之时,嵌入其中web里面的script代码会被执行,从而达到恶意攻击用户的目的。 跨...
  • DVWA之Stored XSS(存储型XSS)

    千次阅读 2018-10-04 11:35:23
    可以看出,low级别的代码对我们输入的message和name并没有进行XSS过滤,而且数据存储在数据库中,存在比较明显的存储型XSS漏洞 我们输入 1 和 <script>alert('hack')</script> ,可以看到,我们的js代码立即就...
  • XSS专项练习参考项目外观样式0x00 div标签,常规插入0x01 textarea标签 闭合该后插入0x02 内容放在标签内,`">`闭合标签0x03 过滤(),使用单引号`0x04 过滤括号()和单引号` 使用html实体编码来绕过0x05 闭合...
  • 无需括号的xss payload

    2020-08-08 13:09:00
    为表达谢意,我特地搬运了一个XSS小技巧送给大家 无需括号的XSS 访问如下链接看效果: https://terjanq.me/xss.php?js=onhashchange=setTimeout;Object.prototype.toString=RegExp.prototype.toString;Object....
  • xss过滤总结

    2019-12-04 01:09:12
    XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序. 例如: 1.盗用cookie,获取敏感信息。 2.利用植入Flash,通过crossdomain...
  • XSS绕过经验总结

    2020-07-06 17:57:02
    XSS绕过经验总结 1.概述 做过不少渗透测试,发现系统中有各式各样的拦截XSS的机制,这边分享一下绕过XSS的经验。 刚开始学习XSS时,可能一开始的攻击方式是将payload整理成字典,然后一个个尝试,或者是放到burp...
  • 这是一个模仿真实xss挖洞的情景,在XSS Challenges练习过程中,我们需要用浏览器中的f12中搜索(),找出我们控制的代码所在的位置,然后思考那些个位置哪个或哪几个位置可以被注入我们想要的代码,然后结合上下文...
  • Stage #1(没有过滤的XSS) 随便在文本框输入一点内容,发现它会直接将输入的文本输出到网页上显示,查看网页元素,发现是b标签 两种思路: 1.闭合b标签,如图 2.它会直接将输入的字符串输出在网页上显示,可以考虑...
  • xss练习总结

    2021-10-12 10:52:35
    XSS是 Cross Site Scripting的简写,即跨站脚本攻击,为了避免和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故缩写为 XSS。 恶意攻击者往 Web 页面里插入恶意 HTML 代码,当用户浏览该页时,嵌入 Web ...
  • XSS获取cookie

    千次阅读 2018-11-21 19:47:05
    DVWA XSS获取cookie 反射型 一、LOW 1.被害者已经登录http://127.0.0.1/DVWA/vulnerabilities/xss_r/ 网站,该网站存在xss漏洞。 网站源代码如下:未进行任何过滤 &lt;?php header ("X-XSS-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,483
精华内容 5,393
关键字:

反xss