【问题标题】:HTML and JavaScript and Json = How and when to encode in which order?HTML、JavaScript 和 Json = 如何以及何时以何种顺序编码?
【发布时间】:2011-06-28 18:01:32
【问题描述】:

我的流程如下:

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 编码吗?据我所知,Jackson 会正确编码内容,而 Jquery 是否足够安全,可以解析甚至不安全的 JavaScript 内容?所以我可以放弃 JavaScript 编码,这样对吗?

非常感谢! 马库斯

【问题讨论】:

    标签: javascript html json security


    【解决方案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> 字符串,并且要正确执行此操作,您需要将纯文本字符串编码/转换为@987654326 @所以你要做的是"<a ...>" + htmlEncode(myPlainTextString + "</a>"

    通过这种推理,3 层嵌入与 3 层类型转换是一样的。现在,如果我能说服语言类型系统设计人员为这种事情构建检查:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多