我猜答案是否定的,但我想确定一下。我希望当我使用get\\u结果获取数据库对象或数组时,在将输出放入html时,仍然需要添加htmlspecialchars()或esc\\u html()。我确实查看了函数,但如果没有找到get\\u results函数使用的函数,就不太清楚了(也不知道我需要挖掘多深)。这个问题提出了另一个很小的问题。有什么理由在通用htmlspecialchars()上使用WordPress函数esc\\u html()吗?
$wpdb is get_results escaped
答案是:当然不是,否则您无法使用它们将其保存在DB中。
但是你问题的答案不那么容易。
Sanitizing 是准备数据以存储在数据库中的过程。例如,如果在post\\u名称中插入一些非法字符,则会将其删除,以便在保存之前对post\\u名称进行清理。如果在Customizer中使用颜色选择器,则应在保存之前对其进行清理(检查它是否确实是一种颜色,而不是一些随机字符串)。等等
但经过清理的数据仍然可能很危险。您可以在标题中使用“>”字符,因此包含该字符的标题将被清除。但当然,您不能在HTML代码中打印它。
那就是escaping 加入游戏。转义是使数据库中的数据对HTML代码安全的过程(基于上下文)。请记住,当同一标题打印在标记内时,应以不同的方式转义(然后应使用esc_html
), 当它用作html属性时(您应该使用esc_attr
) 等等
所以是的,您应该在将数据存储到DB之前始终清理数据,并始终根据给定的上下文使用正确的转义方式。