HTML和JavaScript和Json =如何以及何时编码以哪种顺序?

时间:2011-06-28 18:01:33

标签: javascript html json security

我的流程如下:

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编码,这是正确的吗?

非常感谢! 马库斯

1 个答案:

答案 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层类型铸造相同。现在,如果我能说服语言类型系统设计师为这种事情建立检查:)