답변:
WordPress 3.5부터이 옵션 ( XML-RPC
)은 기본적으로 활성화되어 있으며 WordPress에서 끄는 기능 dashboard
이 없습니다.
다음에서 사용하기 위해이 코드 스 니펫을 추가하십시오 functions.php
.
// Disable use XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );
// Disable X-Pingback to header
add_filter( 'wp_headers', 'disable_x_pingback' );
function disable_x_pingback( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
}
비록 그것이 말한 것을 수행하지만, 사이트를 공격함으로써 공격을받을 때 집중할 수 있습니다. 파일
에서 다음 코드 스 니펫을 사용하는 것이 좋습니다 .htaccess
.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
또는 xmlrpc.php
NGINX 서버 블록에서 파일에 대한 액세스를 비활성화하려면이 옵션을 사용 하십시오.
# nginx block xmlrpc.php requests
location /xmlrpc.php {
deny all;
}
비활성화하면 모바일을 통한 로그인에도 영향을 줄 수 있습니다. 내가 올바른 WordPress 모바일 앱이라면 이것이 필요합니다.
에 대한 자세한 내용은 코덱 을 참조하십시오XML-RPC
.
- 편집 / 추가하기 전에 항상 파일을 백업하십시오.
@Prosti,-당신은 RESTful API
WordPress에 제공 할 옵션에 대해 절대적으로 정확 합니다!
나는 이것을 언급하는 것을 잊었다. 당시에는 불가능했던 코어 ( WordPress 버전 4.1 )에 이미 통합되어 있어야합니다 . 그러나 WordPress 4.5에서 핵심이 될 것입니다.
순간의 대안이 플러그인 : 워드 프레스 REST API (버전 2)
까지 당신은 그것을 사용할 수 있습니다 Restful API
또한 워드 프레스의 핵심이다.
WordPress 4.5 출시 예정일. (2016 년 4 월 12 일 (+3 주))
에 관심이있는 사람들을 위해
RESTful
에, 유래 아주 좋은 커뮤니티 위키입니다.
X-Pingback
단일 게시물 / 페이지에 대한 헤더를 얻는 사람들을 위해. 완전히 제거하려면 다른 필터를 사용해야 add_filter('pings_open', '__return_false', PHP_INT_MAX);
합니다..
functions.php
테마를 변경할 때 이와 같은 것을 추가하면 모든 효과가 사라집니다. function.php
디자인 목적으로 만 플러그인을 사용하십시오!
=
nginx conf 코드의 첫 번째 줄에 등호 ( )가없는 것처럼 보입니다 . 이것은 나를 위해 일했다 : location = /xmlrpc.php {
우리는 해커로부터 파일을 보호하기 위해 htaccess 파일을 사용하고 있습니다.
# BEGIN protect xmlrpc.php
<files xmlrpc.php>
order allow,deny
deny from all
</files>
# END protect xmlrpc.php
웹 서버 구성을 통해 차단할 수 있으면 @Charles의 제안이 좋습니다.
PHP를 사용해서 만 비활성화 할 수 있다면 xmlrpc_enabled
필터가 올바른 방법이 아닙니다. 마찬가지로 여기에 설명 :
https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/
에만 인증을 필요로 XML을 RPC 메소드를 사용하지 않습니다.
대신 xmlrpc_methods
필터를 사용하여 모든 방법을 비활성화하십시오.
<?php
// Disable all xml-rpc endpoints
add_filter('xmlrpc_methods', function () {
return [];
}, PHP_INT_MAX);
다음 컨텐츠와 함께 xmlrpc.php에 POST 요청을 보내서 작동하는지 테스트 할 수 있습니다.
<methodCall>
<methodName>system.listMethods</methodName>
</methodCall>
필터가 작동하면 3 가지 방법 만 남습니다.
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<string>system.multicall</string>
</value>
<value>
<string>system.listMethods</string>
</value>
<value>
<string>system.getCapabilities</string>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
컬로 빠르게 테스트 할 수 있습니다.
curl -X POST \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/xml' \
-d '<methodCall><methodName>system.listMethods</methodName></methodCall>' \
https://your-wordpress-site.com/xmlrpc.php
가장 좋은 방법 xmlrpc.php
은 파일 자체를 삭제하거나 비활성화하지 않고 플러그인으로 기능을 비활성화하는 것입니다. 파일 자체는 WordPress 핵심 업데이트에서 대체되는 반면, 플러그인은 핵심 업데이트 후 및 테마를 변경 한 경우 비활성화 된 상태로 유지됩니다.
다른 플러그인에 대해서는 https://wordpress.org/plugins/search.php?q=disable+xml-rpc 를 참조 하십시오 . 그들은 모두 약간의 차이가 있습니다.
이러한 플러그인은 테마의 추가 기능과 같은 일을 할 functions.php
파일이나 추가 order,allow deny
의 차이에 플러그인 또는 기능을 비활성화 통화 인 상태, (다른 답변에 설명 된대로)의 .htaccess에 규칙을 xmlrpc.php
PHP를 통해, 그리고 htaccess로 작품의 규칙 웹 서버에서 mod_rewrite를 활용하여 (예 : Apache 또는 Nginx). 최신 서버에서 PHP와 mod_rewrite를 사용하는 것 사이에는 눈에 띄는 성능 차이가 없습니다.
IIS에서 WordPress를 호스팅하는 극소수의 경우 IIS URL 다시 쓰기 모듈을 사용하여 유사한 htaccess와 같은 제한을 수행 할 수 있습니다. 아래 예에서는 실제 클라이언트 IP가 X-Forwarded-For 헤더에 있고 알려진 화이트리스트 IP는 55.55.555.555이며 화이트리스트가 아닌 IP에 HTTP 404로 응답한다고 가정합니다.
<rule name="wordpress-restrictions" enabled="true" stopProcessing="true">
<match url="(^xmlrpc.php)|(^wp-admin)|(^wp-login.php)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_X_FORWARDED_FOR}" pattern="(^55\.55\.555\.555$)" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="404" subStatusCode="44" statusReason="File or directory not found" statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>
첫 번째 방법으로 add_filter('xmlrpc_enabled', '__return_false');
파일 functions.php
또는 사이트 특정 플러그인에 코드 를 넣을 수 있습니다 . 파일을 편집하는 것보다 사이트 고유의 사이트에 명확하게 배치하는 것이 좋습니다 functions.php
.
최근에 버전 6.3.12부터 모든 위치에 대한 직접 액세스를 차단할 수있는 Wordfence를 설치했습니다. 금지 된 액세스 IP 목록의 옵션 페이지에 /xmlrpc.php를 넣으면 "이 URL에 액세스하는 IP를 즉시 차단합니다"라는 메시지 가 15 분마다 차단되는 시도가 표시됩니다.
이것은 또한 다른 IP 주소로 다시 돌아 오는 성가신 봇에서 탈출하기 위해 URL을 차단할 수 있다는 장점이 있습니다.
유효한 작업에 Apps에서 xmlrpc.php를 사용할 수 있는지 여부는 알 수 없습니다.
처음에는 서버에서 504 시간 초과 및 502 잘못된 게이트웨이 오류가 발생하는 데 문제가 있었지만 해결 된 것 같습니다.
지금까지의 결과에 깊은 인상을 받았으며 Wordfence를 설치하기 전에 사이트가 해킹 된 후 항상 최신 버전의 WordPress 및 플러그인이 있음에도 불구하고 귀중한 정리 프로파일을 생성했습니다.
/xmlrpc.php
액세스하는 IP를 금지하는 보안 규칙에 추가하면 합법적 인 트래픽을 차단할 수있는 것 같습니다. 핑백이 활성화 된 사이트가 귀하의 사이트에 대한 링크를 연결하면 해당 사이트는 해당 URL로 요청을 보내고 즉시 차단됩니다. 문제가 발생할 수있는 것처럼 보입니다.