删除Java中的跨站点脚本
我有一些老项目要维护。当使用某种工具扫描代码质量时,可以发现代码有很多跨站点脚本问题,我需要解决这些问题。下面给出了其中一个问题删除Java中的跨站点脚本,java,xss,Java,Xss,我有一些老项目要维护。当使用某种工具扫描代码质量时,可以发现代码有很多跨站点脚本问题,我需要解决这些问题。下面给出了其中一个问题 public class Tester1 { public void doRecurrssion(JspWriter out, MyDTO dto){ out.print("<table"); out.print("<tr>"); out.print("<td width='30&g
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>");
}
}
公共类测试员1{
公共作废或保留(JspWriter out,MyDTO){
out.print(“+dto.getLastName()+”\n”);
输出。打印(“”);
输出。打印(“”);
}
}
我收到了上述代码中第3和第4条“out.print”语句的跨站点脚本问题。如何解决此问题?我猜该工具正在抗议,因为您正在获取原始值(例如
getFirstName()
的返回值)并将其逐字包含在HTML页面中
如果您通过对值进行HTML编码(例如使用库)来保护自己免受XSS攻击,则警告很可能会消失:
out.print(“'
+Encode.forHtml(dto.getLastName())+“\n”);
下面的html代码将如何工作
@AbhishekNaswale:这里有一些JSP示例。
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");