$wpdb is get_results escaped

时间:2018-06-12 作者:tim92109

我猜答案是否定的,但我想确定一下。我希望当我使用get\\u结果获取数据库对象或数组时,在将输出放入html时,仍然需要添加htmlspecialchars()或esc\\u html()。我确实查看了函数,但如果没有找到get\\u results函数使用的函数,就不太清楚了(也不知道我需要挖掘多深)。这个问题提出了另一个很小的问题。有什么理由在通用htmlspecialchars()上使用WordPress函数esc\\u html()吗?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

答案是:当然不是,否则您无法使用它们将其保存在DB中。

但是你问题的答案不那么容易。

Sanitizing 是准备数据以存储在数据库中的过程。例如,如果在post\\u名称中插入一些非法字符,则会将其删除,以便在保存之前对post\\u名称进行清理。如果在Customizer中使用颜色选择器,则应在保存之前对其进行清理(检查它是否确实是一种颜色,而不是一些随机字符串)。等等

但经过清理的数据仍然可能很危险。您可以在标题中使用“>”字符,因此包含该字符的标题将被清除。但当然,您不能在HTML代码中打印它。

那就是escaping 加入游戏。转义是使数据库中的数据对HTML代码安全的过程(基于上下文)。请记住,当同一标题打印在标记内时,应以不同的方式转义(然后应使用esc_html), 当它用作html属性时(您应该使用esc_attr) 等等

所以是的,您应该在将数据存储到DB之前始终清理数据,并始终根据给定的上下文使用正确的转义方式。

结束

相关推荐

$wpdb selects wrong database

我在另一个WordPress网站的文件夹中创建了一个新的WordPress网站。示例-主站点。com-mainsite。com/第二站点我创建了一个插件,并使用$wpdb 将数据插入数据库,插件将数据插入第一个/父站点的数据库。我使用的代码包括$wpdb 如下所示:$path = $_SERVER[\'DOCUMENT_ROOT\']; include $path . \'/wp-load.php\'; include $path . \'/wp-config.php\'; inc