在Java中删除跨站点脚本

时间:2017-12-12 12:44:22

标签: java xss

我有一些旧项目需要维护。使用某种工具扫描代码质量时,发现代码中存在许多我需要解决的跨站点脚本问题。其中一个问题如下。

 public class Tester1 {

    public void doRecurrssion(JspWriter out, MyDTO dto){

        out.print("<table");
        out.print("<tr>");
        out.print("<td width='30><font face='Arial, Helvetica'>"+dto.getFirstName()+"</font><td>\n");
        out.print("<td width='30><font face='Arial, Helvetica'>"+dto.getLastName()+"</font><td>\n");
        out.print("</tr>");
        out.print("</table>");
    }
}

我收到第3和第3版的跨网站脚本问题上述代码中的第4个“out.print”语句。如何解决?

1 个答案:

答案 0 :(得分:1)

我的猜测是该工具正在抗议,因为您正在获取原始值(例如getFirstName()的返回值)并将其逐字地包含在HTML页面中。

如果您通过对值进行HTML编码来保护自己免受XSS侵害,则很可能警告会消失,例如使用OWASP Java Encoder库:

out.print("<td width='30><font face='Arial, Helvetica'>" 
    + Encode.forHtml(dto.getFirstName()) + "</font><td>\n");
out.print("<td width='30><font face='Arial, Helvetica'>" 
    + Encode.forHtml(dto.getLastName()) + "</font><td>\n");