Xmlrpc.php को खत्म करने का सबसे अच्छा तरीका?


25

जब आपको इसकी आवश्यकता न हो तो वर्डप्रेस से xmlrpc.php फ़ाइल को खत्म करने का सबसे अच्छा तरीका क्या है?

जवाबों:


26

वर्डप्रेस 3.5 के बाद से यह विकल्प ( XML-RPC) डिफ़ॉल्ट रूप से सक्षम है, और वर्डप्रेस से इसे बंद करने की क्षमता 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.phpNGINX सर्वर ब्लॉक से फ़ाइल तक पहुंच को अक्षम करने के लिए इसका उपयोग करें ।

# nginx block xmlrpc.php requests
location /xmlrpc.php {
    deny all;
}

ध्यान रखें कि अक्षम करने से मोबाइल के माध्यम से लॉगिन पर भी प्रभाव पड़ सकता है। अगर मैं सही हूँ WordPress मोबाइल ऐप को इसकी आवश्यकता है। के उपयोग के बारे में अधिक जानकारी के लिए कोडेक्स
देखें ।XML-RPC

  • कृपया संपादित / जोड़ने से पहले हमेशा फ़ाइल का बैकअप लें।


संपादित करें / अपडेट

@Prosti, -आप बिल्कुल सही हैं- उन विकल्पों के बारे में जो RESTful APIवर्डप्रेस के लिए पेश करेंगे!

मैं यह उल्लेख करना भूल गया। इसे पहले ही कोर ( वर्डप्रेस संस्करण 4.1 ) में एकीकृत किया जाना चाहिए था जो उस समय संभव नहीं था। लेकिन जैसा कि लगता है, वर्डप्रेस 4.5 में कोर होगा।

पल के लिए विकल्प यह प्लगइन है: वर्डप्रेस रीस्ट एपीआई (संस्करण 2)
आप इसका उपयोग तब तक कर सकते हैं जब तक Restful APIकि वर्डप्रेस के लिए भी कोर न हो।
वर्डप्रेस ४.५ की रिलीज की लक्ष्य तिथि। (12 अप्रैल 2016 (+ 3w))

जो लोग StackoverflowRESTful पर रुचि रखते हैं , उनके लिए एक बहुत अच्छा समुदाय विकि है।


2
अगर मैं सही हूं तो वर्डप्रेस मोबाइल ऐप को इसकी आवश्यकता है - संभावित रूप से भविष्य में इसकी आवश्यकता नहीं होगी क्योंकि हमारे पास वर्डप्रेस रेस्टफुल एपीआई (वर्डप्रेस 4.5) के लिए संक्रमण है
प्रोस्टी

2
उन लोगों के लिए जो अभी भी X-Pingbackसिंगल पोस्ट / पेज के लिए हेडर प्राप्त करते हैं । हमें इसे पूरी तरह से हटाने के लिए एक और फिल्टर का उपयोग करने की आवश्यकता है add_filter('pings_open', '__return_false', PHP_INT_MAX);:।
17

1
functions.phpविषयों को बदलते समय उस तरह की चीजों को जोड़ना सभी प्रभाव खो देगा। function.phpकेवल डिज़ाइन उद्देश्यों के लिए है, एक प्लगइन का उपयोग करें!
डेविड

@ डेविड, निश्चित रूप से लेकिन ppl तो बेहतर ऐसे प्लग इन के लिए बनाने के बजाय म्यू-प्लगइन्स फ़ोल्डर का उपयोग करें। जब ppl को इस तरह के फ़ंक्शन की आवश्यकता होती है / उपयोग करते हैं, तो उनके पास एक कारण है और किसी प्लगइन को डी-एक्टिवेट करने का विकल्प किसी के पास भी नहीं है (एक व्यवस्थापक भी नहीं)।
चार्ल्स

ऐसा लगता है कि वहाँ =nginx conf कोड की पहली पंक्ति में एक समान चिह्न ( ) गायब है। इसने मेरे लिए काम किया: location = /xmlrpc.php {
डेव

5

हम इसे हैकर्स से बचाने के लिए htaccess फाइल का उपयोग कर रहे हैं।

# BEGIN protect xmlrpc.php
<files xmlrpc.php>
order allow,deny
deny from all
</files>
# END protect xmlrpc.php

5

जब आपके पास अपने वेब सर्वर के कॉन्फ़िगरेशन के माध्यम से इसे ब्लॉक करने की क्षमता है, तो @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

4

सबसे अच्छी बात यह है xmlrpc.phpकि फ़ाइल को हटाने या अक्षम करने के बजाय एक प्लगइन के साथ कार्यों को अक्षम करना है । फ़ाइल को स्वयं ही वर्डप्रेस कोर अपडेट में बदल दिया जाएगा, जबकि एक प्लगइन कोर अपडेट के बाद इसे डिसेबल रखेगा और यदि आप थीम बदलते हैं।

विभिन्न प्लगइन्स के लिए https://wordpress.org/plugins/search.php?q=disable+xml-rpc देखें । उन सभी में मामूली अंतर है।

ये प्लगइन्स वही कार्य करते हैं जो थीम की functions.phpफ़ाइल में जोड़े गए या एक order,allow denyनियम को जोड़ने के लिए .htaccess (जैसा कि अन्य उत्तरों में उल्लिखित है), अंतर होने के साथ एक प्लगइन या फ़ंक्शन xmlrpc.phpपीएचपी के माध्यम से कॉल को निष्क्रिय करता है , और .htaccess में नियम। mod_rewrite को वेबसर्वर (यानी, Apache या Nginx) में बदलकर। आधुनिक सर्वर पर PHP और mod_rewrite का उपयोग करने के बीच कोई सराहनीय प्रदर्शन अंतर नहीं है।


3

चरम अल्पसंख्यक के लिए जो IIS में वर्डप्रेस होस्ट कर रहे हैं, आप इसी तरह के htaccess जैसे प्रतिबंधों को करने के लिए IIS URL रिवाइटर मॉड्यूल का उपयोग कर सकते हैं। नीचे दिए गए उदाहरण में माना जाता है कि सच्चा क्लाइंट IP एक्स-फॉरवर्डेड-फॉर हेडर में आ रहा है, ज्ञात श्वेतसूची आईपी 55.55.555.555 है, और जो आप 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>

0

पहले तरीके से आप कोड add_filter('xmlrpc_enabled', '__return_false');को फ़ाइल functions.phpया साइट विशिष्ट प्लगइन में डाल सकते हैं । फ़ाइल को संपादित करने की तुलना में स्पष्ट रूप से इसे साइट विशिष्ट में रखने की अधिक अनुशंसा की जाती है functions.php

और xmlrpc को खत्म करने के अन्य तरीके


0

मैंने हाल ही में Wordfence स्थापित किया है, जो कि 6.3.12 के संस्करण के रूप में किसी भी स्थान तक सीधी पहुंच को अवरुद्ध करने की क्षमता रखता है। प्रतिबंधित एक्सेस IP की सूची में विकल्प पृष्ठ पर /xmlrpc.php डालते हुए "इन URL तक पहुँचने वाले IP को तुरंत ब्लॉक करें" अब हर 15 मिनट में ब्लॉक किए जा रहे एक प्रयास को दिखा रहा है।

यह उन pesky बॉट से बचने के लिए URL को ब्लॉक करने में सक्षम होने का भी लाभ है जो एक अलग आईपी पते के साथ बार-बार वापस आते हैं।

मुझे नहीं पता कि यह वैध संचालन के लिए Apps द्वारा xmlrpc.php के उपयोग की अनुमति देता है या नहीं।

मैं कुछ मुद्दों के साथ पहले सर्वर पर 504 टाइमआउट और 502 बैड गेटवे त्रुटियों का उत्पादन कर रहा था, लेकिन लगता है कि यह बस गया है।

अब तक के परिणाम से बहुत प्रभावित हैं और यह वर्डफ़ेंस स्थापित करने से पहले साइट हैक होने के बाद और हमेशा वर्डप्रेस और प्लगइन्स के नवीनतम संस्करण होने के बावजूद एक मूल्यवान क्लीनअप प्रोफ़ाइल का उत्पादन करता है।

वर्डफेंस https://www.wordfence.com/


जोड़ा जा रहा है /xmlrpc.phpएक सुरक्षा नियम यह है कि का उपयोग ऐसा लगता है जैसे कि यह वैध यातायात ब्लॉक सकता आईपी पर प्रतिबंध लगाने के लिए। यदि आपकी साइट के लिए पिंगबैक के लिंक वाली साइट सक्षम है, तो वह साइट उस URL पर एक अनुरोध भेज देगी और तुरंत अवरुद्ध हो जाएगी ... ऐसा लगता है कि यह समस्या पैदा कर सकता है।
एडम-एसएफडी

0

मैं इस छोटे कोड के लिए 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;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.