दिलचस्प पोस्ट
मैं स्ट्रिंग में एक बैकस्लैश (\) कैसे लिखूं? SQL सर्वर में सभी डेटाबेस में एक ही परिणाम सेट में मैं सभी तालिकाओं को कैसे सूचीबद्ध करूं? एक लिंक बनाएं एक नई विंडो खोलें (न टैब) कैसे सीएसएस में विक्रेता उपसर्गों को मान्य करने के लिए -webkit- और -moz-? उद्देश्य- C #import लूप मैं कैसे चलने के लिए अपना मैवेन एकीकरण परीक्षण प्राप्त करूं? अच्छी तरह से बनाए गए कोष्ठकों के सभी संयोजन ढूँढना एकाधिक आज्ञाओं के साथ एक्सरग्स तर्क के रूप में वर्कशीट्स को एक में मजबूत करना तालिका दृश्य में स्थिर और प्रोटोटाइप सामग्री को गठजोड़ करें टी-एसक्यूएल: स्ट्रिंग कॉन्टैनेनेशन के विपरीत – स्ट्रिंग को कई रिकॉर्ड में विभाजित कैसे करें आरएम, सीपी, एमवी कमांड्स के लिए तर्क सूची बहुत लंबी त्रुटि है एमुलेटर शुरू करते समय त्रुटि मैं विंडोज प्रोग्राम के साथ C ++ में कंसोल आउटपुट कैसे प्राप्त करूं? संयोजन स्प्रिंग प्रोजेक्ट और जर्सी

mysql_real_escape_string वी.एस. जोड़ता है

क्या कोई दो PHP मैनुअल से इन 2 फ़ंक्शंस के बीच अंतर पर कुछ प्रकाश डाल सकता है

addslashes: बैकस्लैश के साथ एक स्ट्रिंग लौटाता है जो वर्णों से पहले क्वेरीज़ को उद्धृत करने की आवश्यकता होती है। ये वर्ण एकल उद्धरण ('), दोहरे उद्धरण ("), बैकस्लैश () और एनयूएल (शून्य बाइट) हैं।

mysql_real_escape_string: mysql_real_escape_string () MySQL के पुस्तकालय फ़ंक्शन mysql_real_escape_string को कॉल करता है, जो निम्नलिखित वर्णों के लिए बैकस्लैश बनाता है: \ x00, \ n, \ r, \, ',' और \ x1a

मैं जो बड़ा अंतर इकट्ठा कर रहा हूं \ x00, \ n \ r \ x1a जो addlashes बच नहीं जाता है, क्या आप मुझे बता सकते हैं कि इसका क्या महत्व है?

धन्यवाद

वेब के समाधान से एकत्रित समाधान "mysql_real_escape_string वी.एस. जोड़ता है"

क्या आप उद्धरण शायद डॉक्टर से है, लेकिन जहां तक ​​मुझे पता है कि यह जरूरी नहीं कि सच है।

addslashes आमतौर पर परेशान करने वाले वर्णों पर स्लैश जोड़ता है। mysql_real_escape_string जो भी MySQL को भागने की आवश्यकता है बच जाती है। यह addslashes तुलना में अधिक या कम वर्ण हो सकता है।

इसके अलावा, mysql_real_escape_string जरूरी बचने के लिए स्लैश नहीं जोड़ेंगे हालांकि मुझे लगता है कि अगर आप ऐसा करते हैं, तो यह काम करता है, MySQL एस्केप के हाल के संस्करणों को इसके पहले एक स्लैश डालने के बजाय उन दोनों को एक साथ डालकर उद्धरण।

मेरा मानना ​​है कि आपको हमेशा addslashes बजाय अपने डेटा प्रदाता के एस्केप फ़ंक्शन का उपयोग करना चाहिए, क्योंकि addslashes या तो इसका उपयोग करने वाले उद्देश्य के लिए बहुत अधिक या पर्याप्त कार्य नहीं कर सकता है दूसरी ओर, mysql_real_escape_string जानता है कि एक क्वेरी में इसे एम्बेड करने के लिए स्ट्रिंग तैयार करने के लिए क्या करना है। यहां तक ​​कि अगर चश्मा सामान से बचने के तरीके के बारे में बदलते हैं और अचानक यह बैकस्लैश नहीं होता है कि आपको अब उपयोग करना चाहिए, आपका कोड अभी भी काम करेगा क्योंकि mysql_real_escape_string को इसके बारे में पता होगा

mysql_real_escape_string () डेटाबेस में वर्तमान कनेक्शन द्वारा उपयोग किए गए वर्ण सेट को भी खाते में लेता है।

PHP फ़ंक्शन mysql_real_escape_string () उसी नाम के MySQL सी एपीआई फ़ंक्शन का उपयोग करता है: http://dev.mysql.com/doc/refman/5.1/en/mysql-real-escape-string.html

इसके अलावा addlashes पढ़ें () बनाम mysql_real_escape_string () एक नमूने के लिए, कि आप एसक्यूएल इंजेक्शन का इस्तेमाल कर सकते हैं, भले ही PHP सर्चिफिकेट विशेषज्ञ क्रिस शिफ्लेट, आप addlashes () का उपयोग करते हैं।


अन्य लोग क्वेरी पैरामीटर का उपयोग करने की सलाह देते हैं, और फिर आपको डायनामिक मानों से बचने की कोई ज़रूरत नहीं है। मैं यह भी सलाह देता हूं, लेकिन PHP में आपको PDO या ext / mysqli पर स्विच करना पड़ता है, क्योंकि सादे ext / mysql API क्वेरी मापदंडों का समर्थन नहीं करता है।

इसके अलावा, कुछ कोने के मामलों में भी हो सकते हैं, जहां आप किसी गतिशील स्ट्रिंग मान के लिए क्वेरी पैरामीटर का उपयोग नहीं कर सकते हैं, जैसे कि आपके खोज पैटर्न को पूर्ण टेक्स्ट खोज में।

mysql_escape_string और mysql_real_escape_string साथ इतिहास का एक गुच्छा था वे "सामान्य" पलायन तंत्र प्रदान करने के प्रयास दोनों थे जो कि एसक्यूएल इंजेक्शन हमलों की संभावना को कम करेगा।

mysql_real_escape_string और addslashes ठीक है, अगर वे वास्तव में आप क्या जरूरत है – लेकिन वे शायद नहीं हैं।

जैसा कि @ एफ़्राज़ीयर कहते हैं, आपको तैयार बयान का उपयोग करना चाहिए

पीडीओ का उपयोग करने वाले "आइड्स" तैयार करने के बजाय आप यह प्रयोग कर सकते हैं, जबकि आपका एप्लीकेशन मैसेकली का उपयोग करता है (सावधान रहना! "I" और "Mysql पर")

 $nick = $connect->real_escape_string($nick); $nick= addcslashes($nick, '%_'); $pass = $connect->real_escape_string($pass); $pass = addcslashes($pass, '%_'); 

दोनों को अनदेखा करें और केवल पैरामीटर वाले क्वेरीज़ का उपयोग करें जब तक, ज़ाहिर है, आप इंजेक्शन हमलों पसंद करते हैं।