前言
项目是java-sec-code:https://github.com/JoyChou93/java-sec-code
XSS一般是将恶意的JavaScript代码植入html里面,导致访问请求的时候会造成JavaScript代码的执行,主要的有存储形XSS、反射形XSS、DOM形XSS。
看下具体的实例
0X00 从java代码出发
进入controller文件
/src/main/java/org/joychou/controller/XSS.java
先看第一个反射形的。
29行代码可以看出,接收一个参数xss,并直接将xss返回。示例:弹出当前页面存储的cookie
再来看下存储形的。
43行代码:将接收到的XSS参数,存储在cookie里面,并非我们常见的将数据存储在数据库里面。
然后通过/stored/show 将存储在cookie里面键名为xss的值返回到页面上。
一般来说存储形XSS是存在数据库里面,导致访问该页面的用户都有可能会造成蠕虫攻击,而这种人为存储在cookie里面的,利用范围比较小吧,没有什么实际意义。
0X01 修复
将接收的参数进行字符串的替换。主要是进行HTML转义替换。
origin = StringUtils.replace(origin, "&", "&");
origin = StringUtils.replace(origin, "<", "<");
origin = StringUtils.replace(origin, ">", ">");
origin = StringUtils.replace(origin, "\"", """);
origin = StringUtils.replace(origin, "'", "'");
origin = StringUtils.replace(origin, "/", "/");