Springboot 实战一个依赖解决XSS攻击

这篇具有很好参考价值的文章主要介绍了Springboot 实战一个依赖解决XSS攻击。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 什么是XSS介绍

XSS: Cross Site Scripting,为不和层叠样式表(Cascading Style Sheets, CSS) 的缩写混淆,故将跨站脚本攻击缩写为XSS。

恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中 Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

在一开始的时候,这种攻击的演示案例是跨域的,所以叫"跨站脚本"。
但是发展到今天,由于JavaScript的强大功能基于网站前端应用的复杂化,是否跨域已经不再重要。但是由于历史原因,XSS这个名字一直保留下来。
XSS长期以来被列为客户端Web安全中的头号大敌。因为XSS破坏力强大,且产 生的场景复杂,难以一次性解决。
现在业内达成的共识是:针对各种不同场景产生的XSS,需要区分情景对待。
攻击原理:

XSS的原理是WEB应用程序混淆了用户提交的数据和JS脚本的代码边界,导致浏览器把用户的输入当成了JS代码来执行。

比如再评论接口,本来提交的是正常的字符串,但是坏人提交了<script>alert('hey!you are attacked');</script>
或者<script>alert('hey!you are attacked');</script>
。再别人看他发的评论的时候。如果是直接将评论渲染数来是不是就直接执行了这个脚本了,第一个劫持流量实现恶意跳转、第二个是恶意弹窗。当然还很多工具方式。参考:万字讲解9种Web应用攻击与防护安全。XSS、CSRF、SQL注入等是如何实现的

Springboot中防御

xss-spring-boot-starter 自动装配包封装了AntiSamy实现了XSS防御功能。

AntiSamy是OWASP的一个开源项目,通过对用户输入的 HTML / CSS / JavaScript
等内容进行检验和清理,确保输入符合应用规范。AntiSamy被广泛应用于Web服务对存储型和反射型XSS的防御中。

maven坐标:

<dependency>
    <groupId>com.admin4j</groupId>
    <artifactId>xss-spring-boot-starter</artifactId>
    <version>0.0.7</version>
</dependency>

查看最新依赖版本 https://central.sonatype.com/artifact/com.admin4j/xss-spring-boot-starter/

配置

admin4j:
  xss:
    match-pattern: 1
    ignore-uris:
      - /xss/form-ignore/?
    include-uris:
      - /xss/form-include/?
  • match-pattern: 匹配模式
    • 0:全部关闭(不使用xss)
    • 1 忽略模式 (按照 ignoreUris 没有出现在这里的才会执行xss过滤)
    • 2 包含模式 (按照 includeUris 只有出现在这里的才会执行xss过滤 )
    • 其他全部开启xss
  • ignore-uris:忽略 uri 列表,支持ant风格
  • include-uris:包含uri 列表,支持ant风格
  • antisamy-policy: 防护xss策略。可选值:“”,“ebay”,“anythinggoes”,“myspace”,“slashdot”,“tinymce”, 自定义

AntiSamy策略文件

ntiSamy对“恶意代码”的过滤依赖于策略文件。策略文件规定了AntiSamy对各个标签、属性的处理方法,策略文件定义的严格与否,决定了AntiSamy对XSS漏洞的防御效果。在AntiSamy的jar包中,包含了几个常用的策略文件,

Springboot 实战一个依赖解决XSS攻击

此处我们拷贝antisamy-ebay.xml文件到resources目录下并命名为antisamy-test.xml,来自定义AntiSamy策略

Springboot 实战一个依赖解决XSS攻击

测试

@RestController
@RequestMapping("xss")
public class XssController {

    @GetMapping
    public String get(String key) {

        return key;
    }

    @PostMapping("form")
    public String form(User user) {

        return JSON.toJSONString(user);
    }

    @PostMapping("form-ignore/**")
    public String formIgnore(User user) {

        return JSON.toJSONString(user);
    }

    @PostMapping("form-include/**")
    public String formInclude(User user) {

        return JSON.toJSONString(user);
    }

    @PostMapping("json")
    public String json(@RequestBody User user) {

        return JSON.toJSONString(user);
    }
}

测试代码地址 https://github.com/admin4j/admin4j-example/blob/master/src/main/java/com/admin4j/xss/XssController.java

Springboot 实战一个依赖解决XSS攻击

Springboot 实战一个依赖解决XSS攻击

Springboot 实战一个依赖解决XSS攻击

项目地址:https://github.com/admin4j/admin4j-framework文章来源地址https://www.toymoban.com/news/detail-436636.html

到了这里,关于Springboot 实战一个依赖解决XSS攻击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 理解什么是sql注入攻击 + xss攻击 + cors 攻击

    SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串, 最终达到欺骗服务器执行恶意的SQL命令 。 SQL注入攻击的总体思路: 寻找到SQL注入的位置 判断服务器类型和后台数据库类型 针对不同的服务器和数据库特点进行SQL注入攻击 SQL注入攻击实例: 比如

    2023年04月18日
    浏览(45)
  • CSRF 攻击和 XSS 攻击分别代表什么?如何防范?

    一:PHP         1. CSRF 攻击和 XSS 攻击分别代表什么?                 1.CSRF攻击                 1.概念:                 CSRF(Cross-site request forgery)跨站请求伪造,用户通过跨站请求,以合法身份做非法的事情                 2.原理:            

    2024年02月13日
    浏览(19)
  • SpringBoot 该如何预防 XSS 攻击

    XSS 漏洞到底是什么,说实话我讲不太清楚。但是可以通过遇到的现象了解一下。在前端Form表单的输入框中,用户没有正常输入,而是输入了一段代码: /inputimg src=1 onerror=alert1  这个正常保存没有问题。问题出在了列表查询的时候,上面的代码就生效了,由于图片的地址乱写

    2024年02月13日
    浏览(18)
  • 【Web】什么是 XSS 攻击,如何避免?

    🍎 个人博客: 个人主页 🏆 个人专栏: Web ⛳️   功不唐捐,玉汝于成 目录 前言 正文 常见方法: 结语  我的其他博客 在当今数字化时代,网络安全成为信息技术领域中的一项至关重要的任务。XSS(跨站脚本攻击)作为常见的Web应用程序漏洞,可能导致严重的安全问题。

    2024年02月01日
    浏览(20)
  • Java 防御XSS攻击实战与示例代码

    XSS, 跨站脚本攻击, 简单来说, 就是非本站点的脚本被执行了。 关于XSS 的详细介绍和防御参考: XSS(跨站脚本)攻击与预防 和 跨站脚本攻击(XSS)及防范措施。 本篇介绍在Java 项目中如何快速修复XSS 漏洞。本篇使用的是黑名单的方式, 对于非法字符进行转义。 黑名单的方式虽

    2023年04月24日
    浏览(22)
  • springboot-防止sql注入,xss攻击,cros恶意访问

    1.sql注入 sql注入: 把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 解决方法: 1)无论是直接使用数据库还是使用如mybatis组件,使用sql的预编译,不要用拼接字符串。 2)后台过滤检测:使用正则表达式过滤传入的参数**;

    2024年02月16日
    浏览(23)
  • php解决XSS攻击

    跨站脚本攻击(Cross-Site Scripting,XSS)是一种常见的Web应用程序安全漏洞。它允许攻击者将恶意脚本注入到受害者的浏览器中,并在受害者访问受漏洞影响的网页时执行这些恶意脚本。 XSS攻击通常发生在Web应用程序对用户输入的处理过程中。攻击者可以利用未经过滤或转义的

    2024年02月03日
    浏览(29)
  • 关于xss攻击解决方案

    前端安全系列(一):如何防止XSS攻击? 情况一: 后端直接返回带有样式的字符串,使用v-html会受到xss的攻击: 原理:Vue中的v-html指令用以更新元素的innerHTML,其内容按普通HTML插入,不会作为Vue模板进行编译,容易受到xss攻击 xss攻击检验的方式: 方法一: 使用xss插件 htt

    2023年04月26日
    浏览(23)
  • xss攻击原理与解决方法

    实施XSS攻击需要具备两个条件: 一、需要向web页面注入恶意代码; 二、这些恶意代码能够被浏览器成功的执行。 看一下下面这个例子: 这段代码在旧版的IE8和IE8以下的版本都是可以被执行的,火狐也能执行代码,但火狐对其禁止访问DOM对象,所以在火狐下执行将会看到控制

    2024年04月15日
    浏览(24)
  • 【安全】 Java 过滤器 解决存储型xss攻击问题

    跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆,所以简称为XSS。 XSS是一种经常出现在web应用中的计算机安全漏洞 ,也是web中最主流的攻击方式。 XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些

    2024年02月08日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包