什么是最安全的方式来输出管理员在主题设置中输入的自定义JavaScript和CSS代码?

时间:2015-06-13 作者:user1981248

我正在创建一个主题,在这个主题中,我为管理员创建了选项,以便在“主题设置”页面(使用options API创建)中输入自定义Javascript和Css代码。

现在我不知道如何以最好的方式输出这段代码。对于我决定使用的Csswp_add_inline_style() 更新css文件,对于JavaScript,我只是在wp_footer() 标记,如下所示:

if ( $custom_js != \'\' ) { ?>
  <script id="theme-custom-js">
    <?php echo $custom_js; ?>
  </script>
<?php }
<?php wp_footer(); ?>
所有这些都很好,但我不确定在简单地将css添加到文件或回显用户输入的任何内容之前,是否应该使用任何转义函数。

我试过了esc_html, esc_jswp_json_encode, 但很明显,这些措施的目的恰恰相反。

我理解代码应该是安全的,因为它应该是来自管理员的,但我只是在整个主题中采取了极端的措施,并试图在它被呼出之前逃离几乎所有的东西。所以我觉得我也应该这样做。

请让我知道这件事,非常感谢。

1 个回复
SO网友:Rarst

允许用户控制代码显然是不安全的操作。正如您所注意到的,清理的目的基本上是为了不让用户滑入任何可执行和/或恶意的内容。

要“清理”可执行代码,您需要对其进行编程理解(代码解析器)和标准引擎,以区分什么是安全的,什么是不安全的。对于这样的要求,它是乌托邦式的。

本机WordPress允许管理员在帖子内容中使用JavaScript。人们时不时地将其报告为“可怕的安全漏洞”,但实际上这只是一个二元信任问题——要么你信任某个用户输入可执行代码,要么你不输入。在这种情况下,基本上没有中间立场或“但不是那个代码”。

结束

相关推荐

Dashboard Widget CSS

我想在我的自定义仪表板小部件中添加一个类名,但我在搜索codex时找不到这样做的方法。现在我的小部件上唯一的类名是postbox (这是在“/wp admin/includes/template.php”中添加的),但我想添加更多。我该怎么做?add_action(\'wp_dashboard_setup\', function () { wp_add_dashboard_widget(\'widget2\',\'Graph\',\'widget_2\'); });&#x