java代码审计-xss

0x01 漏洞挖掘

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    response.setContentType("text/html");
    String content = request.getParameter("content");
    request.setAttribute("content", content);
    request.getRequestDispatcher("/WEB-INF/pages/xss.jsp").forward(request, response);
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Xss Test</title>
</head>
<body>
<div>
    ${content}
</div>
</body>
</html>

一个简单的小demo,xss本质上就是浏览器执行了域外的代码,出现的场景比较多,需要具体情况具体分析

0x02 漏洞防御

可以使用esapi的encoder

import org.owasp.esapi.ESAPI;

String content = request.getParameter("content");
content = ESAPI.encoder().encodeForHTML(content);
content = ESAPI.encoder().encoderForJavaScript(content); //防御dom xss使用jsencode

也可以自行进行htmlencode

import org.apache.commons.lang.StringUtils;

private String htmlEncode(String content) {
    content = StringUtils.replace(content, "&", "&amp;");
    content = StringUtils.replace(content, "<", "&lt;");
    content = StringUtils.replace(content, ">", "&gt;");
    content = StringUtils.replace(content, "\"", "&quot;");
    content = StringUtils.replace(content, "'", "&#x27;");
    content = StringUtils.replace(content, "/", "&#x2F;");
    return content;
}

0x03 参考链接

http://liehu.tass.com.cn/archives/1427

点击关注,共同学习!
安全狗的自我修养

github haidragon

https://github.com/haidragon

原文地址:http://www.cnblogs.com/haidragon/p/16885380.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性