2017-12-29 5 views
1

난 WordPress 사이트 (4.9.1)에 nonce 필드 (wp_nonce_field())가 포함되어 있고 admin-post.php에 게시 된 양식이 있습니다. 나는 매우 간단한 방법으로 그것을 사용wp_nonce_field의 유효성을 검사하지 않습니다.

... :

if (! isset($_POST['referer']) || ! wp_verify_nonce($_POST['referer'], $action)) 
:

<input type="hidden" id="referer" name="referer" value="d6dd8e58dd" /> 
<input type="hidden" name="_wp_http_referer" value="/slug/?laorder=99371&amp;laid=92bbfca59e41a4938ce8c0751cfcd0c4a68e75c14bd94b981505cc037079280&amp;lauser=myemail%domain.com" /> 

문제는 검증에 관한 것입니다 :

<?php wp_nonce_field($action, 'referer'); ?> 

는 ... 즉,이 같은 것을 생성

은 (알 수없는) 일부 상황에서 작동하지 않습니다. 시크릿 모드로 게시 할 때 항상 작동하는 것으로 보이며 일부 U에서는 임의로 실패합니다. 다른 브라우저 (크롬, 파이어 폭스 또는 사파리)가있는 sers.

모든 사용자가 참석자입니다. 이 임의 행동이 일어나는 이유

은 아무도 알고 있습니까?

답변

1

당신은 모든 사용자가 손님이며 아무도 로그인되어 있지 않지만 로그인하지 않은 사용자는 nonce를 사용하지 않아야한다고 말했기 때문에. 전체 또는 부분 페이지 캐싱 시나리오에서 넌센스를 사용하면 안됩니다. 인상 주어진 많은 시간과는 달리, 단지 사이트의 보안을 개선하지 않는 어떤 특별한 이유와 여기 저기 넌스를 뿌리, 사용자 로그인 비에 대한 실제 문제가 발생할 수 있습니다.

워드 프레스 사용자 인증 쿠키 정보를 확인하고 해당 게시물을 삭제할 수있는 경우를 삭제 진행하기 때문이다. 침입자가이 작업을 수행하면 브라우저가 사용자 모르게 해당 URL로 이동하게됩니다. 예를 들어 제 3 자 페이지에 링크를 작성합니다. 예를 들면 다음과 같습니다.

<img src="http://example.com/wp-admin/post.php?post=123&action=trash" /> 

이 워드 프레스에 대한 요청이 브라우저가 자동으로 인증 쿠키를 첨부 할 수 있도록 브라우저를 실행할 것이고, 워드 프레스이 유효한 요청 고려할 것입니다.

source

관련 문제