在保存之前还是在显示之前按Esc键有关系吗?

时间:2016-05-22 作者:Jason

在许多“如何创建自定义元框”教程中,当保存数据时,即update\\u post\\u meta,数据会转义:

update_post_meta( $post_id, \'city\', esc_attr( ucwords( $_POST[\'city\'] ) ) ); 
有些教程在保存时不esc,并在屏幕输出时执行。

但是,转义保护屏幕的输出,即回声:

echo esc_attr( $city );
那么,如果在输出到屏幕之前或在保存之前按esc键,这有关系吗?

如果您在保存时按esc键,则esc键的顺序、消毒和验证是否重要?

您是否esc然后清理并验证或清理,esc并清理。等

2 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

是的,的确如此。转义取决于上下文,在最坏的情况下,如使用esc_html 直接写入DB时,只是一个安全漏洞。

即使没有安全问题,也有理论问题。用户要求您存储A,而您正在存储B。在简单的情况下,B正是A在HTML中的显示方式,但生活很少是简单的,而在某一点上,您希望在您想要的输入中显示Aesc_attr 在你想使用的文本区域的另一个esc_html. 如果您已经在DB中将A转换为B,则需要为B重建原始A的PITA,以便对其应用正确的转义函数。

经验法则:在DB中,您应该存储用户提交的原始值(可能已清理,但未转义),转义只应在输出时执行。

SO网友:Daniel Mulder

来自用户或其他功能等的输入进行验证和清理。用于在执行之前清理sql字符串(很重要!)查看此页http://codex.wordpress.org/Data_Validation 在数据库下。如果要清理来自不受信任来源的输入,请清理“文本输入”下的“查找”或“使用”http://codex.wordpress.org/Function_Reference/sanitize_text_field 它也位于第一页的文本节点下。现在,您可以更安全地使用在脚本中动态构建的sql字符串,并将其安全地存储在数据库中。esc\\U html只用于浏览器和显示符号,如&;这也可以被视为代码,并且显示不正确,仅此而已。

如果您想确保始终使用相同的数据,那么json\\u将其编码为UNICODE,将其转换为base64字符串,然后存储或发送它。

相关推荐

如何在WordPress开发中添加带有ACF自定义字段ID的自定义metabox字段

我是wordpress开发的新手,我在我的项目中安装了高级自定义字段插件,并创建了两个文本字段名称&;我还创建了一个插件,可以在帖子中创建一个带有文本框的元框。现在在帖子中,我将获得自定义字段名称(&A);电子邮件和我的自定义元框旁边将出现,但我必须将我的元框附加到名称字段旁边,即在名称字段和电子邮件字段之间。我的metabox代码如下。请任何人帮帮我//Creating the custom meta box function my_notice_meta_box() {