WordPress 서버에서 논스 토큰을 새로 고치지 않음
플러그인에 이와 유사한 양식이 있습니다.
<!-- Client form -->
<form>
<?php wp_nonce_field('my_form','_my_token'); ?>
<!-- Additional form fields -->
</form>
다음 두 개의 필드를 생성합니다.
<input type="hidden" id="_my_token" name="_my_token" value="abcdefghij" />
<input type="hidden" name="_wp_http_referer" value="/wp-admin/tools.php?page=my-plugin%2Fplugin.php" />
이 양식을 제출하면 다음과 같이 유효성을 확인합니다.
//Server's side check
if(!wp_verify_nonce($_POST['_my_token'],'my_form')){
echo 'Invalid token! Expected token: '. wp_create_nonce( 'my_form');
exit;
}
문제는 서버에서 토큰은 변경되지 않고 항상 동일하며 이 단계에서는 항상 유효성 검사가 실패한다는 것입니다.WordPress에서 로그아웃했다가 다시 로그인하면 클라이언트 토큰이 바뀌었지만 서버에서는 동일합니다.
로컬에서 테스트해 본 결과, 다시 로그인하면 항상 양쪽에서 토큰이 변경되지만, 프로덕션 환경에서는 클라이언트 측에서만 변경됩니다.
어떻게든 캐시된 것 같지만 정확히 무엇인지는 모르겠습니다.WP 슈퍼캐시 플러그인을 사용해 보았지만 지금은 사용할 수 없게 되어 이 문제가 지속되었습니다.제 프로덕션 사이트에서 다중 사이트 기능을 활성화하고 있지만, 그것과 관련이 없는 것 같습니다.무슨 생각 있어요?
당신의 논스가 바뀔 것으로 예상되는 기간은 언제입니까?
다른 변경사항이 없는 연속적인 새로 고침 시 페이지 로드 간에 논스가 동일할 수 있습니다.기본적으로 거기 앉아서 F5를 치면 같은 논스가 나옵니다.
이것은 디자인에 의한 것입니다.검증에 사용하기 위해서는 짧은 시간 내에 논스의 비능률적인 생성이 필요합니다.
다시 한 번 말하지만, 기본적으로 이런 식으로 작동하지 않으면 당신은 당신의 논스를 확인할 수 없을 것입니다.생성할 때 값과 다시 생성하여 확인할 때 값은 별개입니다.유효성 검사는 항상 실패합니다.
wp_verify_nonce()
최대 24시간 동안 (다른 모든 것과 동일한) 논스를 수락할 수 있습니다 (WP Codex 페이지 참조).다른 전화를 받으시려면 그보다 더 오래 기다리셔야 할 수도 있습니다.
발생할 수 있는 다른 시스템 이벤트로 인해 새 논스가 생성될 수 있습니다.나는 이것을 직접 할 필요가 없었지만 당신이 사용할 수 있는 것 같습니다.wp_nonce_tick()
이 과정을 밟을 수 있습니다.
둘 중 하나 또는 둘 다 가능할 수 있습니다.wp_create_nonce()
(직접 사용)wp_nonce_field()
) 및wp_verify_nonce()
일부 플러그인에 의해 다시 작성되었을 수 있습니다. 둘 다 정의되어 있기 때문입니다.pluggable.php
오버라이드 할 수 있도록 의도된 것입니다.잘 작성된 WP 인식 CDN이나 다른 캐시 솔루션은 세션을 지속하기 위해 정확히 그렇게 할 수 있습니다.슈퍼캐시가 이것을 하는지 아닌지 모르겠습니다.
또는 시스템 구성이 아직 구성되어 있지 않은 경우 직접 해당 기능을 다시 작성하도록 선택할 수도 있습니다.이는 보안 코드이며 보안 코드를 작성하는 데 주의해야 합니다. 오픈 소스 보안 코드의 가장 큰 장점은 동료 검토를 거치고 사용자의 (새) 코드가 동일하지 않을 것이라는 점입니다.
언급URL : https://stackoverflow.com/questions/36033624/wordpress-not-refreshing-nonce-token-on-the-server
'programing' 카테고리의 다른 글
테이블의 현재 값을 사용하여 문 업데이트 (0) | 2023.10.04 |
---|---|
정렬된 메모리를 얻을 수 있는 최고의 크로스 플랫폼 방법 (0) | 2023.10.04 |
Wordpress와 Spring MVC의 통합 (0) | 2023.10.04 |
jQuery 페이드 디스플레이 없이 꺼집니까? (0) | 2023.10.04 |
파이썬에서 for 루프에서 리스트 요소를 제거하는 방법? (0) | 2023.10.04 |