WP REST API를 안전하게 비활성화
P粉463811100
P粉463811100 2024-01-10 16:27:31
0
2
504

내 Wordpress 사이트의 보안을 개선하려고 노력하던 중 WP REST API가 기본적으로 활성화되어 있음을 발견했습니다(제 기억이 맞다면 WP 4.4부터).

이를 비활성화하는 안전한 방법은 무엇입니까?

여기서 "안전하다"는 것은 다른 WP 핵심 기능을 손상시키지 않는 등 의도하지 않은 부작용을 일으키지 않는다는 것을 의미합니다.

한 가지 가능한 방법은 .htaccess를 사용하여 규칙을 다시 작성하는 것이지만 놀랍게도 이 작업에 대한 "공식적인" 지침을 찾지 못했습니다.

어떤 도움이나 조언이라도 대단히 감사하겠습니다 :)

업데이트: 타사 플러그인은 제가 찾고 있는 솔루션이 아닙니다. 이 작업을 해결할 수 있는 도구가 많이 있다는 것을 알고 있지만 여기에는 웹 사이트 속도를 저하시키는 추가 기능이 많이 포함되어 있습니다. 나는 플러그인의 추가 오버헤드 없이 이 문제에 대한 한 줄 해결책이 있기를 바랍니다.

업데이트 2: 이것은 WordPress의 공식 의견입니다: https://developer.wordpress.org/rest-api/using-the-rest-api/frequently-asked-questions/#can-i-disable-the-rest-api

이에 따라 WordPress 팀은 향후 WP 기능이 새로운 REST API에 의존하기를 희망합니다. 이는 REST API를 비활성화하는 안전한 방법이 없음을 의미합니다.

WP 보안을 담당하는 보안 전문가가 충분하기를 바랍니다.

업데이트 3:

WordPress API 매뉴얼에 해결 방법이 있습니다. 모든 요청에 ​​대해 인증을 요구할 수 있습니다

이렇게 하면 웹사이트의 REST API에 대한 익명 액세스가 비활성화되고 인증된 요청만 유효합니다.

P粉463811100
P粉463811100

모든 응답(2)
P粉478445671

허용된 답변은 인증되지 않은 사용자에 대한 모든 API 호출을 비활성화하지만 요즘 많은 플러그인이 이 API 기능에 의존합니다.

모든 호출을 비활성화하면 예상치 못한 웹사이트 동작이 발생하게 됩니다. 이 코드를 사용할 때도 이런 일이 저에게도 일어났습니다.

예를 들어 ContactForm7은 이 API를 사용하여 연락처 정보를 데이터베이스에 보내고(제 생각에는) ReCaptcha 유효성 검사를 수행합니다.

인증되지 않은 사용자에 대해 특정 (기본) 엔드포인트를 비활성화하는 것이 더 낫다고 생각합니다 .

으아아아

이렇게 하면 이제 열려 있는 유일한 엔드포인트는 플러그인에 의해 설치된 엔드포인트뿐입니다.

사이트에서 활성화된 전체 엔드포인트 목록은 https://YOURSITE.com/wp-json/

를 참조하세요.

귀하의 요구 사항에 따라 $endpoints_to_remove 배열을 자유롭게 편집할 수 있습니다.

맞춤형 게시물 유형이 있는 경우 목록에 모두 추가하세요.

저의 경우 기본 엔드포인트 접두사 wp-json 更改为 mybrand-api에서 변경했습니다. 이는 수천 건의 무차별 대입 요청을 하는 봇을 억제하는 역할을 합니다.

내가 한 일은 다음과 같습니다.

으아아아
P粉512363233

저자의 원래 질문을 바탕으로 WordPress 공식 추천(https://developer.wordpress.org/rest-api/using-the-rest-api/frequently-asked-questions/#can-)에서 옵션 2를 선택했습니다. i-disable-the-rest-api). 따라서 function.php를 넣고 로그인한 사용자만 API의 나머지 부분을 사용하도록 하십시오(그러나 내 코드 블록이 오래된 경우를 대비하여 원래 링크를 교차 확인하십시오;)): 업데이트(2021년 10월 1일):

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿