当前位置:  开发笔记 > 编程语言 > 正文

是否有必要为javascript字符串"转义"字符"<"和">"?

如何解决《是否有必要为javascript字符串"转义"字符"<"和">"?》经验,为你挑选了2个好方法。

有时,服务器端将生成要嵌入内联JavaScript代码的字符串.例如,如果"UserName"应由ASP.NET生成.然后看起来像.


这不安全,因为用户可以拥有他/她的名字

这是XSS漏洞.

所以,基本上,代码应该是:


什么JavascriptEncode确实是增加系统字符"\"前"/"和"""和""."所以,输出HTML是什么样子.VAR用户名="警报(\ '错误\') ";

浏览器不会将" " 解释为脚本块的结尾.所以,XSS避免了.

但是,那里仍然有"<"和">".建议也要逃避这两个字符.首先,我认为将"<"改为"<"并不是一个好主意.和">"到">" 这里.并且,我不确定将"<"更改为"\ <"并且">"更改为"\>"可以被所有浏览器识别.似乎没有必要对"<"和">"进行进一步编码.

对此有什么建议吗?

谢谢.



1> Quentin..:

根据您使用的标记语言,问题有不同的答案.

如果您使用的是HTML,那么您不能用实体表示它们,因为脚本元素被标记为包含CDATA.

如果您使用的是XHTML,那么您可以将它们表示为具有显式CDATA标记的CDATA,或者您可以使用实体来表示它们.

如果您正在使用XHTML,但是将其作为text/html提供,那么您需要编写符合XHTML规则但仍适用于text/html解析器的内容.这通常意味着使用显式CDATA标记并在JavaScript中对它们进行注释.


不久前,我写了一些关于这个的方法和原因.


或者只是添加一个空格:`foo [bar [0]]> 1234` - 或者如果它是字符串的一部分:''foo [bar [0]]'+'> 1234'` - 或者只包含所有脚本在外部.js文件中.

2> Kornel..:

不,你不应该逃避<并在HTML中>使用HTML实体

jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有