ความแตกต่างคือสิ่งที่ฉันควรใช้
ฉันรู้ว่า wp_verify_nonce ตรวจสอบการ จำกัด เวลาและ check_admin_referer ฉันคิดว่าการโทร wp_verify_nonce เช่นเดียวกับการตรวจสอบเซ็กเมนต์ URL ของผู้ดูแลระบบ แต่ฉันสับสนนิดหน่อยที่ฉันควรใช้และเมื่อใด
ขอบคุณสำหรับความชัดเจน
ความแตกต่างคือสิ่งที่ฉันควรใช้
ฉันรู้ว่า wp_verify_nonce ตรวจสอบการ จำกัด เวลาและ check_admin_referer ฉันคิดว่าการโทร wp_verify_nonce เช่นเดียวกับการตรวจสอบเซ็กเมนต์ URL ของผู้ดูแลระบบ แต่ฉันสับสนนิดหน่อยที่ฉันควรใช้และเมื่อใด
ขอบคุณสำหรับความชัดเจน
คำตอบ:
ผมคิดว่าcheck_admin_refererการตรวจสอบ nonce (มันไม่โทรwp_verify_nonce, และ URL อ้างอิงหลังจากการขุดเป็นรหัสหลักฉันรู้ว่ามันไม่ได้ทำเช่นนี้คิดว่ามันเป็นข้อผิดพลาดที่ผมรายงานและไรอันโบเรนตอบด้วยดังต่อไปนี้..:
จริง ๆ แล้วถ้า nonce ถูกต้องอ้างอิงไม่ควรตรวจสอบ ความไม่น่าเชื่อถือของผู้อ้างอิงเป็นหนึ่งในเหตุผลที่ใช้ในขณะนี้ Nonces แทนที่การตรวจสอบผู้อ้างอิงทั้งหมด ครั้งเดียวที่เราตรวจสอบผู้อ้างอิงคือเมื่อจัดการเงื่อนไขความเข้ากันได้ย้อนหลัง -1 -1 หมายความว่ามีคนไม่ได้ใช้ nonces ดังนั้นเราจึงกลับไปตรวจสอบผู้อ้างอิง การใช้งานนี้หายากมาก check_admin_referer () มีชื่อไม่ดีในขณะนี้ซึ่งแทบจะไม่ทำการตรวจสอบผู้อ้างอิง มันจะมีชื่อที่ดีกว่าอย่างเช่น check_nonce () แต่เราเก็บไว้เพื่อประโยชน์กลับและเก่าครั้ง
ดังนั้นในความเป็นจริงจึงไม่มีความแตกต่าง
อย่าพึ่งcheck_admin_refererระวัง!
wp_verify_noneเฉพาะในกรณีเมื่อ_wpnonceถูกตั้ง !!!DIE()ได้ แต่กลับเป็นเท็จ ...ดู phseudo-code นี้ ( แหล่งที่มาเต็มอยู่ ที่นี่ ):
function check_admin_referer( $action = -1, $query_arg = '_wpnonce' ) {
.....
$result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false;
do_action( 'check_admin_referer', $action, $result );
if ( ! $result && ! ( -1 == $action && strpos( $referer, $adminurl ) === 0 ) ) {
die(...);
}
return $result;
}