admin 管理员组文章数量: 1184232
XSS攻击场景
攻击者可以通过构造URL注入JavaScript、VBScript、ActiveX、HTML或者Flash的手段,利用跨站脚本漏洞欺骗用户,收集Cookie等相关数据并冒充其他用户。通过精心构造的恶意代码,可以让访问者访问非法网站或下载恶意木马,如果再结合其他攻击手段(如社会工程学、提权等),甚至可以获取系统的管理权限。
举例说明
例如:在项目看板里待材料初审存储下面代码,点击A项目会弹出框
Payload: <iframe οnlοad=alert("xss");></iframe>
例如 全部阶段结果标准-存储下面代码,点击20200927测试-2
Payload: <textarea οnfοcus=alert("xss"); autofocus>
解决方案
找到项目已有的filter过滤器,在过滤HttpServletRequest参数时,进行参数的处理,使用转义,将 < 转义为 & lt , > 转义为 & gt
public PaasHttpRequestWrapper(HttpServletRequest request) {
super(request);
StringBuilder stringBuilder = new StringBuilder();
InputStream inputStream = null;
try {
inputStream = request.getInputStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
if (inputStream != null) {
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream))) {
char[] charBuffer = new char[CHAR_BUFFER_LENGTH];
int bytesRead;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, BUFFER_START_POSITION, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
stringBuilder.append("");
}
body = stringBuilder.toString();
// 解决xss攻击问题
if (body.contains("<")) {
body = body.replace("<", "<");
}
if (body.contains(">")) {
body = body.replace(">", ">");
}
initParameterMap();
}
推荐博客:https://blog.csdn/itcats_cn/article/details/82321893
版权声明:本文标题:【项目】 Java 过滤器 解决存储型xss攻击问题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1766204163a3444329.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论