在没有随机数验证的情况下处理表单数据我的函数错误 - Wordpress

时间:2018-02-14 12:23:57

标签: php wordpress travis-ci nonce

这是我的功能:

public function save_meta( $term_id = 0, $taxonomy = '' ) {
    $meta = ! empty( $_POST['banner'] ) ? $_POST['banner'] : '';

    if ( empty( $meta ) ) {
        delete_term_meta( $term_id, 'banner' );
    } else {
        update_term_meta( $term_id, 'banner', $meta );
    }
}

当特拉维斯审查代码时,它告诉我 处理表单数据而不进行随机数验证。      | | (WordPress.CSRF.NonceVerification.NoNonceVerification)

我尝试了以下但是没有工作:

public function save_meta( $term_id = 0, $taxonomy = '' ) {
    $meta = ! empty( $_POST['banner'] ) && wp_verify_nonce( sanitize_key( $_POST['banner'] ) ? $_POST['banner'] : '';

    if ( empty( $meta ) ) {
        delete_term_meta( $term_id, 'banner' );
    } else {
        update_term_meta( $term_id, 'banner', $meta );
    }
}

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

nonce是用户id,会话令牌,当前时间和函数wp_create_nonce()生成的标记的散列。此哈希用于验证请求不是conterfeit。在您的情况下,合适的标签将是' update-banner _' 。 $ term_id。您的HTTP请求应将此nonce作为查询或post参数返回。对于表单提交,通常使用表单中的隐藏字段来完成。 WordPress提供了方便函数wp_nonce_field()来执行此操作。然后,您的请求处理程序应使用函数wp_verify_nonce()或便捷函数check_admin_referer()来验证此随机数。有关调用这些函数的详细信息,请阅读WordPress文档。