我的流程如下:
1.) Server: Encode the content as HTML (=using StringEscapeUtils from apache commons)
2.) Server: Encode the content as JavaScript (=using StringEscapeUtils from apache commons)
3.) Server: Marshall via Jackson JSON library
4.) Transfer via JSON
5.) Client display via JQuery in the webpage (via the $ajax() call)
上述过程是否正确?首先是HTML编码然后是JavaScript编码?
我是否必须对内容进行JavaScript编码?据我所知,杰克逊将正确编码内容,Jquery是否足够安全,甚至可以解析不安全的JavaScript内容?所以我可以删除JavaScript编码,这是正确的吗?
非常感谢! 马库斯
答案 0 :(得分:1)
你在嵌入什么?
如果您嵌入的内容是嵌入在JavaScript中的HTML中的纯文本,例如document.write("your text here")
然后在JS编码之前需要进行HTML编码。
如果您要嵌入的是嵌入在JavaScript中的纯文本,则嵌入在HTML中,例如<button type=button onclick="alert('your text here')">
然后你需要以相反的顺序进行。
您可以将此视为类型问题。你有一个string<plain_text>
类型的字符串,当你做"<a ...>" + myPlainTextString + "</a>"
这样的事情时,你正在尝试追加3个string<html>
字符串并正确地做到这一点你需要编码/强制转换纯文本字符串为string<html>
,因此您所做的是"<a ...>" + htmlEncode(myPlainTextString + "</a>"
。
通过这种推理方式,3层嵌入与3层类型铸造相同。现在,如果我能说服语言类型系统设计师为这种事情建立检查:)