HTML和JavaScript,Json=如何以及何时按照哪个顺序进行编码

HTML and JavaScript and Json = How and when to encode in which order?

本文关键字:何时按 顺序 编码 JavaScript Json HTML      更新时间:2023-09-26

我的过程如下所示:

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

非常感谢!Markus

您嵌入了什么?

如果您要嵌入的是嵌入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层类型铸造完全相同。现在,如果我能说服语言类型的系统设计者为这种事情建立检查就好了:)