같은 페이지에서 여러 요청에 동일한 nonce를 사용할 수 있습니까?


13

아니면 이것이 nonce의 목적을 깨뜨 렸습니까? :)

예를 들어, 페이지로드시 또는 무언가 클릭 될 때 실행되는 두 개의 ajax 요청에서 :

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo2',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

답변:


4

워드 프레스 비표 생성 기능은 단지에서 호출하는 것입니다 init훅 :

이 함수를 호출하려면 init 또는 후속 조치를 사용하십시오. 조치 외부로 호출하면 문제가 발생할 수 있습니다. 자세한 내용은 # 14024 를 참조하십시오.

이후 init후크는 "워드 프레스가 완성 로딩 후 실행 있지만 헤더가 전송되기 전에", 논스마다 전체 페이지 요청 (안 아약스 요청)에 생성됩니다. 따라서 기술적으로 여러 요청에 동일한 nonce를 사용할 수 있지만 다른 답변에서 지적했듯이 각 요청마다 고유 한 nonce 를 사용해야 합니다.


nonces가 무엇인지에 대해 더 밝게 비추기 위해 :

넌 스는 각 Ajax 요청에서 보안 토큰으로 전송되어 사용자가 요청을 의도했는지 확인합니다.


이러한 결론은 논 스가 신원 도용을 막는 방법이라는 잘못된 가정에 근거한 것으로 보인다.
scribu

통찰력을 주셔서 감사합니다. 나는 대답을 편집했다.
Naoise Golden

9

예, 논 스는 매우 혼란 스럽습니다. :)

nonce의 개념은 한 번만 사용됨을 의미하지만 WordPress에서는이를 강제하지 않으며 기술적으로 nonce를 여러 번 사용할 수 있습니다.

그러나 nonce는 의도를 확인하는 데 사용되므로 (특정 조치를 수행하는 것을 의미했듯이) 다른 조치에는 다른 nonces가 생성되고 확인되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.