เป็นวิธีที่ดีที่สุดในการกำจัดไฟล์ xmlrpc.php จาก WordPress เมื่อคุณไม่ต้องการมันคืออะไร?
เป็นวิธีที่ดีที่สุดในการกำจัดไฟล์ xmlrpc.php จาก WordPress เมื่อคุณไม่ต้องการมันคืออะไร?
คำตอบ:
เนื่องจาก 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 ที่ถูกต้องก็จำเป็นต้องใช้สิ่งนี้
ดูCodexXML-RPC
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานของ
- กรุณาทำการสำรองไฟล์เสมอก่อนที่จะแก้ไข / เพิ่ม
@Prosti - คุณถูกต้องอย่างแน่นอน - เกี่ยวกับตัวเลือกที่RESTful API
จะเสนอสำหรับ WordPress!
ฉันลืมที่จะพูดถึงเรื่องนี้ มันควรจะได้รับการรวมเข้ากับคอร์ ( รุ่น WordPress 4.1 ) ซึ่งเป็นไปไม่ได้ในเวลานั้น แต่ดูเหมือนว่าจะเป็นแกนหลักใน WordPress 4.5
ทางเลือกในขณะนี้คือปลั๊กอินนี้: WordPress REST API (เวอร์ชัน 2)
คุณสามารถใช้งานได้จนถึงRestful API
เป็นหลักสำหรับ WordPress
วันที่เป้าหมายสำหรับการเปิดตัว WordPress 4.5 (12 เมษายน 2559 (+ 3w))
สำหรับผู้ที่มีความสนใจใน
RESTful
ในStackoverflowเป็นวิกิพีเดียชุมชนดีมาก
X-Pingback
ส่วนหัวสำหรับโพสต์ / หน้าเดียว เราจำเป็นต้องใช้ตัวกรองอื่นเพื่อลบออกอย่างสมบูรณ์: add_filter('pings_open', '__return_false', PHP_INT_MAX);
.
functions.php
จะสูญเสียเอฟเฟกต์ทั้งหมดเมื่อเปลี่ยนธีม function.php
ใช้สำหรับการออกแบบเท่านั้นใช้ปลั๊กอิน!
=
) หายไปในบรรทัดแรกของโค้ด conf nginx ที่นั่น สิ่งนี้ใช้ได้กับฉัน: 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);
คุณสามารถทดสอบว่าใช้งานได้หรือไม่โดยส่งคำขอ POST ไปที่ xmlrpc.php ด้วยเนื้อหา folling:
<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 อย่างรวดเร็ว:
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 โดยใช้ประโยชน์จาก mod_rewrite ในเว็บเซิร์ฟเวอร์ (เช่น Apache หรือ Nginx) ไม่มีความแตกต่างด้านประสิทธิภาพระหว่างการใช้ PHP และ mod_rewrite บนเซิร์ฟเวอร์ที่ทันสมัย
สำหรับชนกลุ่มน้อยสุดที่โฮสต์ WordPress ใน IIS คุณสามารถใช้โมดูล IIS URL Rewrite เพื่อทำข้อ จำกัด คล้ายกับ htaccess ตัวอย่างด้านล่างถือว่า IP ไคลเอ็นต์จริงกำลังมาในส่วนหัว X-Forwarded-For, IP ที่อนุญาตที่รู้จักคือ 55.55.555.555 และคุณต้องการตอบกลับด้วย HTTP 404 กับ IP ที่ไม่ใช่รายการที่ปลอดภัย
<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
เห็นได้ชัดว่าวางไว้ในเว็บไซต์ที่เฉพาะเจาะจงจะแนะนำมากกว่าการแก้ไขไฟล์
ฉันเพิ่งติดตั้ง Wordfence ซึ่งเป็นรุ่น 6.3.12 มีความสามารถในการบล็อกการเข้าถึงโดยตรงไปยังตำแหน่งใด ๆ การใส่ /xmlrpc.php ไปที่หน้าตัวเลือกในรายการการเข้าถึงที่ถูกห้าม"บล็อก IP ที่เข้าถึง URL เหล่านี้ทันที"กำลังแสดงความพยายามหนึ่งครั้งที่ถูกบล็อกทุก 15 นาที
นอกจากนี้ยังมีข้อดีของความสามารถในการบล็อก URL เพื่อหลีกเลี่ยงบ็อตที่น่ารำคาญที่กลับมาพร้อมกับที่อยู่ IP ที่แตกต่างกันและอีกครั้ง
ฉันไม่ทราบว่าอนุญาตให้ใช้ xmlrpc.php โดยแอปเพื่อการดำเนินการที่ถูกต้องหรือไม่
ฉันมีปัญหาบางอย่างกับมันทำให้เกิดข้อผิดพลาด 504 Timeout และ 502 Bad Gateway บนเซิร์ฟเวอร์ในตอนแรก แต่ดูเหมือนว่าจะมีปัญหา
ประทับใจมากกับผลลัพธ์ที่ผ่านมาและสร้างโปรไฟล์การล้างข้อมูลที่มีค่าหลังจากไซต์ถูกแฮ็กก่อนที่จะติดตั้ง Wordfence และแม้จะมีเวิร์ดเพรสและปลั๊กอินเวอร์ชันล่าสุดอยู่เสมอ
/xmlrpc.php
กฎความปลอดภัยห้าม IP ที่เข้าถึงดูเหมือนว่าสามารถบล็อกทราฟฟิกที่ถูกกฎหมายได้ หากไซต์ที่เปิดใช้งานลิงก์ pingbacks ไปยังเว็บไซต์ของคุณไซต์นั้นจะส่งคำขอไปยัง URL นั้นและถูกบล็อกทันที ... ดูเหมือนว่าอาจทำให้เกิดปัญหาได้
ฉันใช้สำหรับ nginx รหัสขนาดเล็กนี้และใช้งานได้ 100%
location ~* (/wp-content/.*\.php|/wp-includes/.*\.php|/xmlrpc\.php$|/(?:uploads|files)/.*\.php$) {
deny all;
access_log off;
log_not_found off;
return 444;
}