क्या sslverify => true for wp_remote_get / wp_remote_post का उपयोग करना सुरक्षित है


18

मैं आमतौर पर इस तर्क का उपयोग त्रुटियों को रोकने के लिए करता हूं wp_remote_getऔरwp_remote_post

array(
    'sslverify' => false
)

सुरक्षा कारणों से मैं इसे true(या डिफ़ॉल्ट सही होने के बाद से) इसे सेट करना चाहूंगा ।

क्या मुझे ऐसा करके किसी समस्या की उम्मीद करनी चाहिए?

जवाबों:


23

TL; DR: हाँ, उस सेटिंग को वर्डप्रेस 3.7 या बाद के संस्करण के रूप में हटा दें।

अतीत में, कई लोगों ने विशेष रूप से sslverify = false पैरामीटर को जोड़ा क्योंकि उनकी PHP की स्थापना प्रमाणपत्र को ठीक से सत्यापित करने में असमर्थ थी।

आमतौर पर, इसका कारण यह था कि सीएपी रूट सर्टिफिकेट की नवीनतम प्रति के साथ PHP इंस्टॉल को अपडेट नहीं किया गया था। रूट सेर्ट्स हर बार बदलते हैं, और आमतौर पर आप इस बदलाव को नोटिस नहीं करते क्योंकि यह सामान्य ब्राउज़र अपडेट में होता है। ठीक है, जब आपके पास https यूआरएल को पुनः प्राप्त करने के लिए एक ब्राउज़र की तरह PHP अभिनय होता है, तो उसे उन रूट प्रमाणपत्र अपडेट की भी आवश्यकता होती है। और अधिकांश होस्ट कभी भी PHP को अपडेट नहीं करते हैं, न ही इसके किसी विशिष्ट हिस्से को अपडेट करते हैं (जैसे प्रमाण पत्र फ़ाइल)।

जब वर्डप्रेस ने संस्करण 3.7 में ऑटो-अपडेटिंग को लागू किया, तो सुरक्षित संचार की आवश्यकता के लिए WordPress.org API को अपग्रेड करने के लिए आवश्यक होना निर्धारित किया गया था। इस समय, वर्डप्रेस ने सीए रूट सर्टिफिकेट फ़ाइल की एक प्रति शामिल करना शुरू किया, जो मोज़िला से प्राप्त की गई थी। चूंकि वर्डप्रेस 3.7, इसलिए, WP_HTTP एपीआई फ़ंक्शंस इस फ़ाइल का उपयोग प्रमाणपत्र सत्यापन करने के लिए करते हैं, और जो कुछ भी पुराना या पुराना संस्करण आपके PHP स्थापना के साथ पैक नहीं किया गया है।

इसलिए, हाँ, वर्डप्रेस 3.7 या बाद के साथ, यह sslverify पैरामीटर को हटाने और http फ़ंक्शन को उचित प्रमाणपत्र सत्यापन करने की अनुमति देना उचित है। किसी भी ज्ञात CAs द्वारा हस्ताक्षरित कुंजी के साथ SSL चलाने वाला कोई भी आधुनिक सर्वर ठीक से सत्यापित किया जाएगा। WP_HTTP में नवीनतम रूट प्रमाणपत्रों की एक कॉपी होनी चाहिए, और कोर प्रोजेक्ट सामान्य अपडेट के साथ वर्डप्रेस में प्रमाण पत्र फ़ाइल को अपडेट करेगा।


धन्यवाद ओटो, मुझे लगता है कि इससे बहुत मदद मिलती है। मैं अपने प्लगइन में कुछ सशर्त जाँच करूँगा
Xaver

9

ऐसे कई कारण हैं जो एसएसएल सत्यापन को विफल कर सकते हैं। बहुत सारे रीडायरेक्ट से शुरू होकर गलत .iniफाइल / सेटअप या बस सर्टिफिकेट या सब डोमेन गुम होना। किसी भी मामले में, आपको उसके कारण को खोजने और उसे ठीक करने की आवश्यकता होगी । नहीं है कोई उसके चारों ओर जिस तरह से।

लेकिन उस समस्या के आसपास अस्थायी रूप से काम करने के लिए (मान लें कि आपको अपना कोड आगे विकसित करने और बाद में एसएसएल त्रुटि को ठीक करने की आवश्यकता है), आप एक स्कैन को स्कैन कर सकते हैं:

add_filter( 'https_ssl_verify', '__return_false' );

जैसा कि आप दूरस्थ अनुरोध के दौरान इसे चला रहे हैं, तो आपको इसे किसी ऐसे HTTP अनुरोध के दौरान ट्रिगर होने वाले फ़िल्टर से जुड़ी कॉलबैक में लपेट देना चाहिए। सुनिश्चित करें कि आप सही मामले के लिए सत्यापन को हटा रहे हैं या नहीं - यह सुनिश्चित करें कि आप अन्य अनुरोधों को असुरक्षित करने के लिए केवल एक बार इसे चलाते हैं।

add_filter( 'http_request_args', function( $params, $url )
{
    // find out if this is the request you are targeting and if not: abort
    if ( 'foo' !== $params['foo'] )
         return $params;

    add_filter( 'https_ssl_verify', '__return_false' );

    return $params;
}, 10, 2 );

यदि यह सार्वजनिक रूप से वितरित प्लगइन है, तो आप इसे एक साधारण विकल्प के साथ संलग्न करना चाह सकते हैं जिसे उपयोगकर्ता चालू या बंद कर सकता है। आप पहले सत्यापित अनुरोध को आज़मा सकते हैं और यदि नहीं (और यदि उपयोगकर्ता ने एक अहस्ताक्षरित अनुरोध चुना है), तो एक संभावित असुरक्षित अनुरोध पर स्विच करें।

अंगूठे का नियम:

है कभी नहीं जब तक अपने उपयोगकर्ताओं को ऐसा करने पर सहमत हुए और जोखिम के जानता है एक असुरक्षित अनुरोध करते हैं।


1
धन्यवाद, मैं अपने स्थानीय वातावरण पर इस मुद्दे की तलाश कर रहा हूं
Xaver

4

WordPress नेटवर्क अनुरोध करने के लिए अंतर्निहित सर्वर सॉफ़्टवेयर (आमतौर पर cURL) पर भरोसा कर सकता है। संक्षेप में, क्योंकि यह है कि सॉफ्टवेयर अच्छा है और वहाँ के लिए है।

विभिन्न कारणों के कारण कुछ सर्वरों पर (मैंने कभी खुद को देखने की जहमत नहीं उठाई थी) सर्वर सॉफ्टवेयर के लिए यह काफी विशिष्ट है कि वह सुरक्षित कनेक्शनों को "सत्यापित" नहीं कर सकता, उन्होंने कहा कि त्रुटियां उत्पन्न हुईं।

इसलिए:

  • यदि वह सर्वर पर निजी कोड है जिसे आप नियंत्रित करते हैं तो आपको यह सुनिश्चित करना चाहिए कि सर्वर ठीक से अनुरोध कर रहे हैं और यह सेटिंग अक्षम नहीं है
  • यदि वह सार्वजनिक वितरण के लिए कोड है, तो आप इसे या तो अक्षम नहीं करना चाहते हैं, लेकिन अगर यह पर्याप्त लोकप्रिय है तो यह सर्वर पर समाप्त हो जाएगा जहां यह किसी बिंदु पर टूट गया है और आपको इसका समर्थन किसी न किसी रूप में करना होगा (लोगों को बताने से यह उचित कॉन्फ़िगरेशन आपके अनुरोधों के लिए इसे अक्षम करने के लिए सेटिंग प्रदान करने की उम्मीद है , और इसी तरह)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.