답변:
나는 nonce (call , and url 참조) 를 확인 했다고 생각 했습니다 . 핵심 코드를 파고 들었을 때 이것이 그렇게하지 않았다는 것을 깨달았습니다. 버그라고 생각하고 Ryan Boren은 다음과 같이 대답했습니다.check_admin_referer
wp_verify_nonce
실제로, nonce가 유효하면 리퍼러를 검사하지 않아야합니다. 리퍼러의 신뢰성은 논 스가 사용되는 이유 중 하나입니다. 넌 스는 리퍼러 검사를 완전히 대체합니다. 리퍼러를 확인하는 유일한 시간은 -1 이전 버전과의 호환성 조건을 처리 할 때입니다. -1은 누군가 nonces를 사용하지 않으므로 참조 자 확인으로 넘어갑니다. 이 사용법은 이제 매우 드 rare니다. check_admin_referer ()는 리퍼러 검사를 거의 수행하지 않으므로 이름이 잘못되었습니다. check_nonce ()와 같은 이름을 사용하는 것이 더 좋지만, 백 컴포지트와 옛날 술을 위해 그대로 유지합니다.
실제로 차이는 없습니다.
의지하지 마십시오 check_admin_referer
, 조심하십시오!
wp_verify_none
경우에만 포함 됩니다 _wpnonce
!!!DIE()
. 대신 거짓을 반환합니다 ...이 의사 코드를 살펴보십시오 ( 전체 소스는 여기에 있습니다 ).
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;
}