我们是否需要转义从主题选项中接收到的数据?

时间:2014-02-11 作者:user1981248

我正在创建一个Wordpress主题,我希望在此之前在其上销售。现在我知道了很多关于使用esc\\u html、esc\\u url等函数转义用户输入的数据的知识,我在评论模板和主题中的其他地方使用了它们。我不确定的是,我是否应该对用户使用主题选项输入的数据库中的数据使用这些函数。因为它仍然是用户输入的数据,只是在我们回显之前,它会通过数据库。

我正在使用Redux Framework 要为我的主题创建主题选项,我在全局变量中有所有设置:

$mytheme_options. 
总结一下我的困惑,如果我想展示徽标图像,我会这样做吗:

img src="<?php echo $mytheme_options["logo_url"]; ?>" />
或者像这样:

img src="<?php echo esc_url($mytheme_options["logo_url"]); ?>" />
我已经到处搜索过了,但没有找到任何讨论如何处理来自数据库的用户输入数据的文章。我也研究了其他主题的代码,他们似乎没有逃避它。但我不确定他们是如何在数据库中插入选项的,我认为这将以某种方式决定是否要转义该数据。

4 个回复
SO网友:Otto

对您总是转义最初来自用户提交的数据的输出。

为了安全起见,您总是转义变量输出,句号。

SO网友:Mark Kaplun

是的,你应该逃跑。DB应该保存原始值,因此您应该假设它需要转义。

你需要逃避你例子中的每一件小事吗?我不知道,但也许你不应该像我那样做;)有些事情更安全的假设是用户不会输入一些随机击键,但总有一个用户会在一只猫在键盘上行走后执行提交。

SO网友:Sudeep K Rana

是的,你应该,但不是总是这样。比如,每当你不确定用户可能会输入一些html内容,比如超链接,而你不想这样做时,你就应该退出它。

正如codex所说:转义HTML属性时始终使用。

法典:esc_attr Wordpress Codex

SO网友:Waylon Fourie

在将任何数据提交到数据库之前进行清理和验证,这是最重要的预防措施。这将确保从数据库中获得“干净”的数据。因此,对显示的数据进行转义不太令人担忧,但仍然可以提高安全性,强烈建议这样做。不要相信任何人,也不要相信任何人,只需要一个特殊的角色就可以破坏你的整个安装,并打开你的网站。

结束