Wp_INSERT_POST是否验证输入?

时间:2011-05-16 作者:Can\'t Tell

如果我在插件中使用wp\\u insert\\u post,我必须检查内容中的SQL注入问题和XSS,还是wp\\u insert\\u post函数可以帮我完成这项工作?

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

简短的回答;absolutely.

wp_insert_post() 将只有SQL转义内容。使用KSES library &;wp_kses() 过滤鼻涕,或esc_html() 转义全部HTML。

最重要的是,退房the codex on data validation (阅读:消毒)。

A Note On KSES: 使用wp_filter_kses()wp_kses_data() 应用与发布评论相同的KSES规则。两者之间的细微差别在于前者希望数据以斜杠转义(并返回相同的数据),而后者则不这样做。

WordPress(奇怪)enforces magic quotes, 所以$_POST, $_GET 默认情况下,将添加转义斜杠。

A Note On wp_insert_post(): 此函数还希望数据数组中添加斜杠,因此需要使用add_magic_quotes() 如果不是这样的话。

Update: 并付诸实践;

$_POST[\'post_title\'] = wp_filter_nohtml_kses( $_POST[\'post_title\'] ); // also expects & returns slashes
$_POST[\'post_content\'] = wp_filter_kses( $_POST[\'post_content\'] );

$post_ID = wp_insert_post( $_POST );

// add to the fun - wp_update_post() will add slashes if $postdata is an object!
$update = ( object ) stripslashes_deep( array( \'ID\' => $post_ID ) + $_POST );
$update->post_title .= \' Updated!\';
wp_update_post( $update )

结束

相关推荐

Comment form validation

如何设置注释字段的验证规则?我更改了评论者姓名/电子邮件/主页onmouseover和onblur的值(我使用它而不是标签-因此如果字段为空,它会显示“您的电子邮件”、“您的主页”等)。问题是,在提交时,它会在主页字段中提交此文本(因为它没有验证,而不像电子邮件字段,如果您输入了除[email protected]).如何验证主页字段?