https://www.jianshu.com/p/c0dc4bbab8e8
<p>${content}</p>
如上述代码所示,在P标签中存在一个输出变量${content},浏览器解析的过程,首先是HTML解析,解析到P标签时,解析Content的内容,然后将其在页面显示出来。
<p><script>alert("实体XSS");</script></p>
如果我们把Content的内容换成上面内容,即script脚本,那么浏览器解析的时候,当解析到P标签时,发现里面的内容存在script标签,便会把其当做JavaScript脚本进行解析,从而达到XSS攻击的目的。
所以针对此类HTML实体间的输出,我们希望输出的是HTML文本内容,而不是HTML标签、JS代码等,所以我们在输出时,需要对Content进行HTML编码,可使用OWASP ESAPI的ESAPI.encoder().encodeForHTML()。