내 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 p>
이에 따라 WordPress 팀은 향후 WP 기능이 새로운 REST API에 의존하기를 희망합니다. 이는 REST API를 비활성화하는 안전한 방법이 없음을 의미합니다.
WP 보안을 담당하는 보안 전문가가 충분하기를 바랍니다.
업데이트 3:
WordPress API 매뉴얼에 해결 방법이 있습니다. 모든 요청에 대해 인증을 요구할 수 있습니다
이렇게 하면 웹사이트의 REST API에 대한 익명 액세스가 비활성화되고 인증된 요청만 유효합니다.
허용된 답변은 인증되지 않은 사용자에 대한 모든 API 호출을 비활성화하지만 요즘 많은 플러그인이 이 API 기능에 의존합니다.
모든 호출을 비활성화하면 예상치 못한 웹사이트 동작이 발생하게 됩니다. 이 코드를 사용할 때도 이런 일이 저에게도 일어났습니다.
예를 들어 ContactForm7은 이 API를 사용하여 연락처 정보를 데이터베이스에 보내고(제 생각에는) ReCaptcha 유효성 검사를 수행합니다.
인증되지 않은 사용자에 대해 특정 (기본) 엔드포인트를 비활성화하는 것이 더 낫다고 생각합니다 .
으아아아이렇게 하면 이제 열려 있는 유일한 엔드포인트는 플러그인에 의해 설치된 엔드포인트뿐입니다.
사이트에서 활성화된 전체 엔드포인트 목록은
를 참조하세요.https://YOURSITE.com/wp-json/
귀하의 요구 사항에 따라
$endpoints_to_remove
배열을 자유롭게 편집할 수 있습니다.맞춤형 게시물 유형이 있는 경우 목록에 모두 추가하세요.
저의 경우 기본 엔드포인트 접두사 도
wp-json
更改为mybrand-api
에서 변경했습니다. 이는 수천 건의 무차별 대입 요청을 하는 봇을 억제하는 역할을 합니다.내가 한 일은 다음과 같습니다.
으아아아저자의 원래 질문을 바탕으로 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일):
으아악