在wp_INSERT_POST之前清理用户输入字段

时间:2020-05-02 作者:hiyo

我读过如何清理、验证和转义文本字段,我知道wp_insert_post 使用清理所有字段wp_kses HTML标记除外。

然而,我对开发还不熟悉,希望得到确认,我会去正确的地方。

现在,我正在创建用户提交前端表单。

有几个输入字段,

1) 帖子标题,类型:text,我使用的清理方法:sanitize_text_field( $_POST[\'post_title\'] )

2) 发布内容,类型:textarea,我使用的清理方法:None,因为允许使用html标记,例如,<h1><img> 我不消毒。wp_insert_post 将清理除允许的html标记以外的标记。

3) URL,类型:URL,我使用的清理方法:esc_url( strtok( \'url, \'?\' )); //剥离查询字符串并清理。

4) 优惠券代码,类型:text,我使用的清理方法:sanitize_text_field( $_POST[\'coupon\'] )

5) 价格,类型:text,我使用的清理方法:sanitize_text_field( $_POST[\'price\'] )

6) 图像文件(缩略图)类型:文件,我使用的清理方法:sanitize_file_name( $_POST[\'file\'][\'name\'] )

7) 类别,类型:int,我使用的清理方法:None,但验证值是否为intabsint(), 或类型设置(int)

还有什么我需要更关心的吗?

我想知道如何保护我的网站。

建议使用的正式文件wp_strip_all_tags 然而,在post title字段中,我只使用sanitize\\u text\\u字段。事实上,我不知道wp_strip_all_tagssanitize_text_field 确切地sanitize_text_field 具有比wp_strip_all_tags, 但鉴于official documentation, wp_strip_all_tags 足够消毒了。我说得对吗?

任何提示都将不胜感激。提前感谢!:)

1 个回复
最合适的回答,由SO网友:simongcc 整理而成

如果呼叫,sanitize_text_field(), 它实际上调用了一个内部函数_sanitize_text_fields() 并为覆盖添加过滤器。所以

首先查看_sanitize_text_fields(), 实际上是这样的

检查是否存在无效的UTF-8,转换为单< 字符到实体带出所有标记包括…在内wp_strip_all_tags() 这里删除换行符、制表符和额外的空格,去掉八位字节sanitize_text_field(), 它已经包括wp_strip_all_tags() 在任务列表中。

这是一种非常安全和通用的方法来清理任何文本。

通过参考源代码,我们知道以下代码使用wp\\u strip\\u all\\u tags()

清理\\u用户(),包括一些特殊字符检查

  • wp\\u trim\\u words()
  • wp\\u html\\u extract()
  • wp\\u setup\\u nav\\u menu\\u item()
  • 注释的wp\\u黑名单检查()。。。etc因为wp_strip_all_tags() 剥离所有标记,包括样式、脚本及其内容。因此,它是一个非常有用的工具,如果需要,可以很好地创建任何自定义解决方案。

    根据源代码,IDs和http状态代码正在sanitize 按absint()。所以我认为你所做的已经足够了。

  • 相关推荐

    如何在Nginx中重写WP-Security的规则?

    我在运行nginx的VPS上有一个WordPress网站。我已经安装了WP安全插件来提高我网站的安全性。将所有设置更改为我喜欢的设置后,一个弹出窗口通知我需要重写规则以保存更改。其中一部分写道“请参阅更好的WP安全仪表板,以获取您需要的重写规则列表。”可在此处找到重写规则列表:# BEGIN Better WP Security # Begin HackRepair.com Blacklist if ($http_user_agent ~* \"^BlackWido