मेरा सर्वर व्यवस्थापक हाल ही में PHP 5.3 में अपग्रेड किया गया है और मुझे एक अजीब "बग" (या feature मिल रहा है, क्योंकि PHP लोगों के पास यह है)। मेरे पास स्पष्ट सुरक्षा कारणों के लिए मेरे अधिकांश स्ट्रिंग फॉर्म डेटा के आसपास mysql_real_escape_string
था, लेकिन अब ऐसा लगता है कि यह भागने PHP द्वारा पहले ही किया जा चुका है।
<?php
echo $_GET["escaped"];
?>
<form method="get">
<input type="text" name="escaped" />
</form>
यह outputs, अगर मैं उदाहरण escape 'this test'
, escape \'this test\'
के लिए दर्ज करें। अगर मैं GET
के बजाय POST
का उपयोग करता हूं तो वही होता है।
क्या यह सीधे 5.3 अपग्रेड से जुड़ा हुआ है या क्या मेरे व्यवस्थापक ने php.ini फ़ाइल में कुछ स्वचालित स्विच ट्रिगर किया है?
इसके अलावा, क्या मुझे इसे छोड़ना चाहिए (अगर यह वास्तव में एक अच्छा असफल सबूत तंत्र है जो सभी को सही ढंग से प्राप्त करता है और चर को पोस्ट करता है), या मुझे इसे अक्षम करना चाहिए (यदि यह भी संभव है!) और जाओ mysql_real_escape_string
पर वापस? मेरी हिम्मत मुझे बताती है कि दृष्टिकोण 2 सबसे अच्छा होगा, लेकिन दृष्टिकोण 1 कुछ हद तक स्वैच्छिक होगा। :)
संपादित करें: असल में, मुझे इसे अक्षम करने की आवश्यकता है। कभी-कभी मैं फॉर्म डेटा इकट्ठा करता हूं और कुछ गलत होने पर क्लाइंट फॉर्म में भेजता हूं (यानी गायब फ़ील्ड), इसलिए मैं नहीं चाहता कि उसे कहीं भी दिखाई न दे।
यह भी ध्यान दिया जाना चाहिए कि यदि आपकी 'php.ini' फ़ाइल में एक वाक्यविन्यास त्रुटि है, तो डिफ़ॉल्ट' magic_quotes_gpc' को सक्षम करना है। इसलिए यदि आपको लगता है कि आपने अपनी कॉन्फ़िगरेशन फ़ाइल में 'magic_quotes_gpc' को अक्षम कर दिया है, तो संभव है कि फ़ाइल में आपकी कॉन्फ़िगरेशन को लागू होने से रोकने में त्रुटि हो सकती है। निजी अनुभव। : पी –