Wordpress और जादू उद्धरण


12

मैं कुछ Wordpress प्लगइन्स लिख रहा हूँ, और मुझे कुछ समस्याएँ हो रही हैं Wordpress पर POST और GET डेटा पर मैजिक कोट्स डालने की।

विशेष रूप से, "wp_magic_quotes" फ़ंक्शन में \ wp- \ load.php शामिल है, जिसे wp-settings.php में (संभवतः हर प्रतिक्रिया पर) कहा जाता है। यह फ़ंक्शन डेटा में जादू उद्धरण जोड़ता है, भले ही मैं PHP सेटिंग्स में जादू उद्धरण बंद कर देता हूं।

/**
 * Add magic quotes to $_GET, $_POST, $_COOKIE, and $_SERVER.
 *
 * Also forces $_REQUEST to be $_GET + $_POST. If $_SERVER, $_COOKIE,
 * or $_ENV are needed, use those superglobals directly.
 *
 * @access private
 * @since 3.0.0
 */
function wp_magic_quotes() {
    // If already slashed, strip.
    if ( get_magic_quotes_gpc() ) {
        $_GET    = stripslashes_deep( $_GET    );
        $_POST   = stripslashes_deep( $_POST   );
        $_COOKIE = stripslashes_deep( $_COOKIE );
    }

    // Escape with wpdb.
    $_GET    = add_magic_quotes( $_GET    );
    $_POST   = add_magic_quotes( $_POST   );
    $_COOKIE = add_magic_quotes( $_COOKIE );
    $_SERVER = add_magic_quotes( $_SERVER );

    // Force REQUEST to be GET + POST.
    $_REQUEST = array_merge( $_GET, $_POST );
}

क्या यह मेरे लिए सिर्फ wp_magic_quotes () wp-settings.php में कॉल करने के लिए सुरक्षित है? यही है, क्या यह सामान्य वर्डप्रेस कोड को नकारात्मक रूप से प्रभावित करेगा और / या कुछ शोषण वेक्टर को खोल देगा? यदि ऐसा है, तो क्या WP कोड को संशोधित करने के अलावा भी ऐसा करने का कोई और तरीका है (इसलिए मुझे हर बार इस बात से निपटने की ज़रूरत नहीं है कि कोई अपडेट है)?


क्या कोई मुझे बता सकता है, जहां / जब फ़ंक्शन wp_magic_quotes()निष्पादित किया जाता है? मैं wp-core में निष्पादन नहीं ढूंढ सका।
टोडुआ


यह समस्या अभी भी 2019 में मौजूद है, 8 साल बाद (जैसे PHP 7.1.33 (2019-10-23) और वर्डप्रेस 5.2.4 (2019-10-14))।
पीटर मोर्टेनसेन

जवाबों:


8

सीधे शब्दों में कहें तो WP अनिश्चित स्थिति में बदल जाता है (मैजिक कोट्स सर्वर कॉन्फ़िगरेशन में सक्षम हो सकता है या नहीं भी हो सकता है) निर्धारित करता है (मैजिक कोट्स हमेशा मौजूद होते हैं और सर्वर कॉन्फ़िगरेशन कोई फर्क नहीं पड़ता)।

सभी WP कोर के लिए इसके साथ खिलवाड़ करने के बजाय, यह आपके कोड में अपने स्वयं के चर पर केवल स्लैश को पट्टी करने के लिए बहुत अधिक समझ में आता है, जब आपको इसकी आवश्यकता होती है।


7
यह पागल है, अगर मैं कर सकता हूँ। मैजिक कोट्स को किसी भी सांई कोडर द्वारा बुरा माना जाता है, और यह वर्डप्रेस द्वारा वास्तव में गैर जिम्मेदाराना विकल्प है। ऐसा नहीं कि मैं हैरान हूं।
ओ ० '।

5
@Lhoris ध्यान दें कि WP अभी और यहाँ मौजूद नहीं है। यह कई वर्षों से मौजूद है। यदि जादू उद्धरण स्वाभाविक रूप से बुरे विचार थे, तो वे पहले स्थान पर मौजूद नहीं थे। जबकि समय बदल जाता है और यह चीखना आसान है कि अब यह कितना बुरा विचार है - कोड बेस में मौजूदा व्यवहार को बदलना भारी सुरक्षा और पीछे की संगतता संगतता के साथ आता है।
रार्स्ट

3

वर्डप्रेस में वर्तमान व्यवहार सभी PHP सिस्टम और कॉन्फ़िगरेशन की संगतता के आधार पर सबसे अच्छा अभ्यास है। वर्डप्रेस ने हमेशा $ _GET, $ _POST, $ _COOKIE और $ _SERVER को सामान्य रूप से स्लैश किया है, और उम्मीद है कि यह ऐसा करना जारी रखेगा।

इसलिए, एक POST या GET पैरामीटर निकालने के लिए हमें लिखना होगा:

$value = stripslashes_deep($_POST['name']); या

$value = stripslashes_deep($_GET['name']);


0

मैंने स्टैक ओवरफ्लो में इसी तरह के प्रश्न में इन सुपरग्लोबल सरणियों से निपटने के लिए एक समाधान लिखा।

इसमें प्रत्येक सुपरग्लोबल के लिए एक एकल "एक्सेसर मेथड" (गेट / सेट) लिखना, पारदर्शी तरीके से स्लैशिंग और स्ट्रिपिंग करना शामिल है। तो आप उदाहरण के लिए उपयोग करेंगे:

echo _get('username');    // echo stripslashes_deep($_GET['username']);
_cookie('name', 'value'); // $_COOKIE['name'] = addslashes_deep('value');

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


-3

मुझे हाल ही में यह समस्या हुई थी, और मैंने आखिरकार इसका पता लगा लिया। मैं मूल रूप से वर्डप्रेस पर जादू उद्धरण पर लगभग हर वेबसाइट खोज रहा था और उनमें से किसी ने भी मदद नहीं की।

इसे कैसे ठीक किया जाए:

  1. अपनी wp-settings.php में जाएं

  2. Wp_magic_quotes () के लिए खोजें;

  3. बस इसे टिप्पणी करें और इसे अभी काम करना चाहिए

यह काम करता है क्योंकि यदि आप उस कोड से पहले देखते हैं तो आप देखेंगे:

// Disable magic quotes at runtime. Magic quotes are added using wpdb later in //wp-settings.php.

@ini_set( 'magic_quotes_runtime', 0 );
@ini_set( 'magic_quotes_sybase',  0 );

वह जादू उद्धरण जो wpdb का उपयोग करने के बाद जोड़ा जाता है, जो कि ज्यादातर लोगों को गड़बड़ कर रहा है, और यह wp_magic_quotes () होने के लिए होता है। बस टिप्पणी करना कि जादू के उद्धरण आपको गड़बड़ करने से रोकेंगे।


6
बुरा विचार: अगले उन्नयन के बाद यह परिवर्तन खो जाता है।
fuxia

कम से कम यह एक बुरा विचार है ™, यह एकमात्र उपाय है जो मैंने सामग्री को सहेजते समय मैगनेटो समस्याओं को दिए बिना वर्डप्रेस और मैगनेटो को समवर्ती रूप से चलाने के लिए पाया है।
forsvunnet

1
यह भी एक बुरा विचार है क्योंकि कई प्लगइन्स बुरी तरह से लिखे गए हैं और एसक्यूएल को सही ढंग से नहीं बचते हैं, इसलिए आपकी साइट एसक्यूएल इंजेक्शन के हमलों की चपेट में आ सकती है। और $ _GET / $ _ POST पर स्ट्रिप्सलैश / स्ट्रिप्सलैश_डिप चलाकर सही काम करने वाले किसी भी प्लग-इन को बैकस्लैश हटाकर उपयोगकर्ता इनपुट को दूषित कर देगा।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.