java-sec-code的xss

java-sec-code
用于学习java漏洞代码
环境部署
直接在idea中使用git 运行即可

@RequestMapping("/reflect")
@ResponseBody
public static String reflect(String xss) {return xss;}

当用户访问到/reflect URL地址时,程序会自动调用reflect方法,该方法定义了一个名为xss的字符串参数,当用户发送一个请求到"/reflect" URL并带有名为xss的查询参数时,该参数的值会自动填充到xss字符串参数中。例如,如果用户访问/reflect?xss=test,那么xss参数的值就会是test,由于程序并未对用户输入进行任何过滤,直接输出,导致xss漏洞
复现

/xss/reflect

在这里插入图片描述
/stored/store/stored/show
store将获取的xss属性值添加到cookie中,show将cookie中的xss属性值输出,导致xss漏洞

@RequestMapping("/stored/store")
@ResponseBody
public String store(String xss, HttpServletResponse response) {Cookie cookie = new Cookie("xss", xss);response.addCookie(cookie);return "Set param into cookie";
}
@RequestMapping("/stored/show")
@ResponseBody
public String show(@CookieValue("xss") String xss) {return xss;
}

访问http://127.0.0.1:8080/xss/stored/store?xss=<script>alert(1)</script>
cookie会增加xss属性
在这里插入图片描述
访问http://127.0.0.1:8080/xss/stored/show即可将xss的内容展现出来

在这里插入图片描述
安全写法

@RequestMapping("/safe")
@ResponseBody
public static String safe(String xss) {return encode(xss);
}private static String encode(String origin) {origin = StringUtils.replace(origin, "&", "&amp;");origin = StringUtils.replace(origin, "<", "&lt;");origin = StringUtils.replace(origin, ">", "&gt;");origin = StringUtils.replace(origin, "\"", "&quot;");origin = StringUtils.replace(origin, "'", "&#x27;");origin = StringUtils.replace(origin, "/", "&#x2F;");return origin;
}

这是利用HTML实体编码来防御XSS,HTML实体编码是一种将特殊字符转换为HTML实体的方法,这样用户输入就不会被浏览器解析为HTML标签或JavaScript代码,从而避免了xss漏洞的产生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/284613.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计网02-计算机网络参考模型

一、OSI七层参考模型 1、分层的思想 分层模型用于网络协议的设计方法&#xff0c;本质是将网络节点间复杂的通信问题分成若干简单的问题逐一解决&#xff0c;通过网络的层次去找问题&#xff0c;将复杂问题简单化。 2、OSI参考模型 由于早期计算机厂商使用的是私有的网络模…

【C++】POCO学习总结(十九):哈希、URL、UUID、配置文件、日志配置、动态库加载

【C】郭老二博文之&#xff1a;C目录 1、哈希 1.1 说明 std::map和std::set 的性能是&#xff1a;O(log n) POCO哈希的性能比STL容器更好&#xff0c;大约快两&#xff1b; POCO中对应std::map的是&#xff1a;Poco::HashMap&#xff1b; POCO中对应std::set的是 Poco::Hash…

详解—【C++】lambda表达式

目录 前言 一、lambda表达式 二、lambda表达式语法 2.1. lambda表达式各部分说明 2.2. 捕获列表说明 三、函数对象与lambda表达式 前言 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。 #include <algorithm> #i…

第7章 排序

前言 在这一章&#xff0c;我们讨论数组元素的排序问题。为简单起见&#xff0c;假设在我们的例子中数组只包含整数&#xff0c;虽然更复杂的结构显然也是可能的。对于本章的大部分内容&#xff0c;我们还假设整个排序工作能够在主存中完成&#xff0c;因此&#xff0c;元素的个…

XXE实体注入漏洞知识点

什么是XXE漏洞&#xff1f; XXE&#xff0c;即XML外部实体注入漏洞&#xff0c;XXE 漏洞发生在应用程序解析 XML 输入时&#xff0c; 没有禁止外部实体的加载 &#xff0c;导致可加载恶意外部文件&#xff0c;造成文件读取、命令执行、攻击内网网站等危险。 XXE漏洞触发的点…

弹窗“由于找不到xinput1_3.dll,无法继续执行代码”的几种解决方法分享

日常中&#xff0c;我们在使用电脑过程中&#xff0c;偶尔会遇到一些错误提示“由于找不到xinput1_3.dll,无法继续执行代码”&#xff0c;这个报错会让程序无法正常运行的情况。那么&#xff0c;xinput1_3.dll到底是什么&#xff1f;它丢失会对计算机产生什么影响呢&#xff1f…

9. DashBoard

9. DashBoard 文章目录 9. DashBoard9.1 部署Dashboard9.2 使用DashBoard 在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。 为了提供更丰富的用户体验&#xff0c;kubernetes还开发了一个基于web的用户界面&#xff08;Dashboard&#xff09;。 用户可以使用…

issue queue的实现方式

主要从一下几个点进行考虑&#xff1a; 集中式&#xff08;Centrallized&#xff09;或者分布式(Distributed)&#xff1b;压缩式&#xff08;Compressing&#xff09;或者非压缩式(Non-compressing)&#xff1b;数据捕捉的方式&#xff08;Data-capture&#xff09;或者非数据…

Leetcode—11.盛最多水的容器【中等】

2023每日刷题&#xff08;六十三&#xff09; Leetcode—11.盛最多水的容器 实现代码 #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) int maxArea(int* height, int heightSize) {int left 0, right heightSize - 1;int m…

Docker部署MinIO对象存储服务器结合内网穿透实现远程访问

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

TCP单人聊天

TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式&#xff0c;也有着优点和缺点 它的优点对比于UDP来说就是可靠一点 因为它的通讯方式是需…

数据库sql语句查询补充

数据库sql语句查询补充 0.前言1.Like谓语2.带有Having当中的分组查询eg. 例题:错题重做: 3.内连接例题 0.前言 数据库期末复习,对自己做错的题进行知识总结和梳理 1.Like谓语 like谓语主要有两个操作 %:百分号,表示任意长度的字符串_:下划线,表示任意单个字符 like谓语的语…