Questions tagged «sanitization»

消毒意味着清除不需要的输入数据(通常是用户输入)。这样做是为了防止发生错误或安全问题,例如将恶意代码注入数据库。WP提供大量的清理功能,以确保数据安全以备将来使用。

2
插件在哪种情况下负责数据验证/清理?
我想确保插件/主题中的所有数据在进入数据库之前以及输出到浏览器之前都得到安全处理。我的问题是,在某些情况下,API会为您处理清理操作(例如,保存帖子元字段时),而在某些情况下,插件/主题作者将全权负责清理操作(例如,保存自定义设置时)。 对于此问题的范围,我不关心在域级别验证数据-例如,检查表单上的Age字段是否在0到120之间,或电子邮件地址是否有效。我只关心安全性-例如,转义SQL查询以避免在保存到数据库时进行SQL注入,或者清除输出到HTML模板的数据以避免XSS。 为了进行输出清理,我知道在将变量回显到HTML模板中时,您总是需要使用esc_html()和之类的函数esc_attr()。但是,使用模板标签时呢?他们都已经清理输出了吗?如果是这样,则针对哪个上下文(常规HTML,标记属性等)?某些函数具有针对不同上下文的变体(例如the_title_attribute(),但大多数没有)。 为了进行输入清理,我知道$wpdb->prepare()在进行手动查询时需要使用,但是在使用Settings API创建插件设置页面或为自定义帖子类型保存帖子元字段时该怎么办? 现在,每当我使用一个函数来查找它是否可以清除时,我就一直在深入研究Core并阅读教程,但这很容易出错并且很耗时。我希望找到所有可能情况以及API是否处理的全面列表。例如, API验证/清除 使用 update_postmeta() 保存用户元 update_user_meta() 输出帖子标题-使用上下文相关的变体 the_title() 等等 您必须手动验证/消毒 使用Settings API保存插件选项。将回调作为的第3个参数传递register_setting()。 直接数据库查询:将查询包装在中$wpdb->prepare()。 以HTML输出变量。使用esc_attr(),esc_html()等 等等 我也很想了解为什么在某些情况下API提供了它,而在其他情况下却没有。我假设它与数据的未知性质有关,但希望听到一个详尽的解释。

4
sanitize_title足以生成帖子吗?
我想为某些字符串生成子弹,而无需经历WordPress子弹的生成流程。因此,我想知道为获得整洁的弹头而调用的函数。我尝试了sanitize_title(),但结果中留有%c2%a0。
16 seo  slug  sanitization 

2
数据清理:带有代码示例的最佳实践
我试图了解数据清理(不是数据验证)以帮助我为WordPress编写安全主题。我搜索了Internet,试图为主题开发人员找到一份详细的最佳实践指南。我遇到了一些资源,包括名为“数据验证”的法典页面,尽管没有一个对我有用。该法典页面列出了可用的消毒功能,其用法以及它们的作用,但是无法解释为什么您要使用另一个消毒功能,或者在什么情况下使用特定的消毒功能。这篇文章的目的是要求每个人都提供不良/未经消毒的代码示例,以及如何对其进行重写以进行适当的消毒。这可以是用于清理帖子标题或帖子缩略图src的通用代码,也可以是用于处理以下内容的精致代码:$_POST Ajax请求的数据。 另外,我想知道WordPress用于添加/更新数据库的功能(例如,下面代码块中提到的功能)是否会自动为您完成清理工作?如果是,那么当您采取其他措施来清理发送到这些WordPress函数的数据时,是否会有例外? add_user_meta update_user_meta add_post_meta update_post_meta //just to name a few 另外,在PHP中回显HTML与在HTML内联中与PHP内联时,是否需要以不同的方式进行清理?为了更清楚我的要求,以下是代码: <?php echo '<div class="some-div ' . $another_class . '" data-id="' . $id . '" >' . $text . '</div>'; ?> <div class="some-div <?php echo $another_class; ?>" data-id="<?php echo $id; ?>"><?php echo $text; ?></div> 上面的两个语句实现了同一件事。但是是否需要以不同的方式来对待它们?


1
wp_insert_posts()的安全性/安全性如何?
查看wp_insert_post()的Codex,它指出该函数“ ...清理变量,进行一些检查,填写缺少的变量,如日期/时间等。”(编辑:我更新了Codex条目以包含一个更强大的示例其中包括安全性以及发布元和类别分配) 只是想知道我是否需要进行进一步的清理以防止XSS骇客之类的东西,或者是否通过该功能做了足够的工作。 老实说,我检查了核心函数,例如在post_content上未找到任何wp_kses()或其他清理方法,因此我有点担心。我所看到的只是数据上的stripslashes_deep()。 因此,当我为wp_insert_post()构建参数时,我应该运行wp_kses()还是其他任何东西? 最佳做法是什么?在其示例中,食品法典委员会对安全性相当谨慎。 谢谢

2
HTML输出是否应该通过esc_html()和wp_kses()传递?
我对esc_html()和的不同用法感到困惑wp_kses()。我知道可以esc_html()将特殊字符转换为它们的HTML实体,并且可以wp_kses()删除不需要的标签(例如<script>),但是我不确定应在什么情况下将它们一起或单独使用。 如果我通过运行某些不受信任的HTML esc_html(),那么任何JavaScript都将以纯文本显示,而不是由浏览器呈现,因此在那时是安全的,对吗?还要运行它的唯一原因wp_kses()是避免显示原始脚本? 基本上,esc_html()使其安全且wp_kses()美观。那是对的吗?



4
清理来自wp_editor的内容
我建立了一个自定义帖子类型,在其中可以找到由生成的标准textarea / tinymce,wp_editor()而我在保存部分时遇到了问题。 如果我使用以下代码保存内容: update_post_meta( $post_id, $prefix.'content', $_POST['content'] ); 一切工作正常,但没有安全性(消毒,验证等...) 如果我使用以下代码保存内容: update_post_meta( $post_id, $prefix.'content', sanitize_text_field($_POST['content']) ); 我解决了安全问题,但内容中丢失了所有样式,媒体等。 用所有应用的样式(插入的媒体但包括消毒剂)保存内容的好方法是什么? 我读了一些有关,wp_kses()但是我不知道如何应用好的过滤器。(允许使用通用标签,我应该阻止哪一个?等。)

1
esc_ *函数之间有什么区别?
我读过专业WordPress,它说: esc_html函数用于清理包含HTML的数据。此功能将特殊字符编码到其HTML实体中 esc_attr 函数用于转义HTML属性 esc_url。此功能应用于清除非法字符的URL。即使href从技术上来说是HTML属性 这些有什么区别? 如果我有 <script>alert('hello world!');</script>this is some content 都< >将转换为< >吗?网址会是这样%xxx吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.