我读过如何清理、验证和转义文本字段,我知道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_tags
和sanitize_text_field
确切地sanitize_text_field
具有比wp_strip_all_tags
, 但鉴于official documentation, wp_strip_all_tags
足够消毒了。我说得对吗?
任何提示都将不胜感激。提前感谢!:)
最合适的回答,由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()。所以我认为你所做的已经足够了。