如果对l10n使用html data-*属性,是否存在安全问题?

时间:2011-02-06 作者:mikkelbreum

我需要向页面传递一个本地化的多维javascript对象。该对象是使用php构建的,表示一些wp主题设置。我找不到一种方法来利用wp\\u localize\\u脚本,因为它不会解析多维数组。

相反,我想出了一个解决方案,使用html5的data-*属性,然后使用jQuery检索它,希望这种方法能够提供x浏览器兼容性。

因此,在需要访问本地化数据的页面上,我让php输出:

<div id="localized" style="display:none" data-localized=\'{"user": "Doe", "skills": {"html":5, "css":4, "php":3} }\'>
然后,我使用以下方法获取本地化数据:

var my_localazed_data = $(\'#localized\').data(\'localized\');
它工作得很好。但我担心的是:

1) 此浏览器是否兼容?

2) 与使用wp\\u localize\\u脚本相比,是否有任何安全问题需要注意?

1 个回复
最合适的回答,由SO网友:hakre 整理而成

Q: 1.)此浏览器是否兼容?

是,适用于所有支持jQuery data(). 大多数现代浏览器通常都支持jQuery。

Q: 2)与使用wp\\u localize\\u脚本相比,是否有任何安全问题需要注意?

wp_localize_script() 主要是做同样的事情,但它将数据保存在服务器端,而不是DOM中。

一如既往,使用javascript并与DOM交互会带来安全隐患。您需要遵循规则来正确地对任意数据进行安全的编码和反编码,以便注入不会引入意外行为。

结束

相关推荐

是否有用于入队脚本的筛选器来剥离type=“Text/javascript”属性

script type=\"text/javascript\" 在HTML5中是可选的,所有浏览器(即使是旧的浏览器)都可以识别没有它的JavaScript。我正在构建一个HTML5网站,希望我的脚本输出保持一致。但是,使用WordPress排队功能的脚本打印为type=\"text/javascript\". CSS还打印有type=\"text/css\", 这也是不需要的。我找不到删除这些属性的筛选器。有吗?