Jas*_*n S 354 javascript json
这个"逃脱"我的原因.
JSON转义正斜杠,因此哈希{a: "a/b/c"}被序列化为{"a":"a\/b\/c"}而不是{"a":"a/b/c"}.
为什么?
Rub*_*ben 271
JSON不要求你这样做,它允许你这样做.它还允许您使用"\ u0061"表示"A",但这不是必需的.\/在<script>标记中嵌入JSON时允许帮助,这不允许</内部字符串,如Seb所指出的.
一些Microsoft的ASP.NET Ajax/JSON API使用这个漏洞来添加额外的信息,例如,日期时间将被发送为"\/Date(milliseconds)\/".(呸)
Har*_*d L 32
JSON规范说你可以逃脱正斜杠,但你不必这样做.
Bol*_*wyn 15
我前一段时间问了同样的问题,不得不自己回答.这是我想出的:
看来,我的第一个想法[ 它来自它的JavaScript根源 ]是正确的.
'\/' === '/'在JavaScript中,JSON 是有效的JavaScript.但是,为什么\z在JSON中不允许其他被忽略的转义(例如)?关键是阅读 http://www.cs.tut.fi/~jkorpela/www/revsol.html,然后是 http://www.w3.org/TR/html4/appendix/notes.html#hB .3.2.斜杠转义的功能允许将JSON嵌入HTML(作为SGML)和XML中.
PHP默认情况下会转义正斜杠,这可能是为什么它如此常见的原因。我不知道为什么,但可能是因为嵌入字符串"</script>"一个内部<script>标签被认为是不安全的。
可以通过传递JSON_UNESCAPED_SLASHES标志来禁用此功能,但是由于原始结果已经是有效的JSON,因此大多数开发人员将不会使用此功能。
的JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES必须是默认的,而不是一个(奇怪)选项... 怎么说给PHP开发人员?
在默认情况下一定是最频繁使用,以及(电流)应用最广泛的标准UTF8.Github或其他地方有多少PHP代码片段需要这种exoctic"嵌入HTML"功能?
| 归档时间: |
|
| 查看次数: |
166009 次 |
| 最近记录: |