Escaping with this PHP function is unsafe? -


अगर मैं

  addcslashes ($ input, chr (0x00)। Chr (0x0d)। Chr (0x0a)। Chr (0x1a)। Chr (0x5c)। Chr (0x27)। Chr (0x22));  

क्या SQLi को रोकने के लिए पर्याप्त होगा? मेरे पास सभी आवश्यक अक्षर हैं, इसलिए जब तक यूटीएफ -8 इनपुट है, तब तक इसके साथ कोई समस्या नहीं होनी चाहिए। बेशक विधि का अमान्य उपयोग या कुछ इसी तरह के कारण एसक्यूएलआई हो सकता है मैं इस का उपयोग कर रहा हूं क्योंकि मैं डेटाबेस से कनेक्ट किए बिना भागना चाहता हूं और मुझे पता है कि मेरा इनपुट यूटीएफ -8 है, अगर ऐसा नहीं है, तो मैं इसे परिवर्तित कर रहा हूं।

मैं इसका उपयोग कर रहा हूं क्योंकि मैं डेटाबेस से कनेक्ट किए बिना भागना चाहता हूं

विशिष्ट मामले के लिए MySQL बस संभव नहीं है। कनेक्शन बनने तक, PHP नहीं जानता कि वर्ण एन्कोडिंग का उपयोग डेटाबेस के साथ संवाद करने के लिए किया जा रहा है, और इसलिए यह नहीं पता है कि आपके स्ट्रिंग में ' बाइट्स ' वर्ण अगर आपका कनेक्शन हमेशा यूटीएफ -8 है, तो आप सुरक्षित होंगे, लेकिन यदि उस कोड को सर्वर पर तैनात किया गया था, तो यह कहता है कि Shift-JIS, आप एक आंशिक-चरित्र ' बाइट से बच सकते हैं ग़लत और वास्तव में कारण एक एसक्यूएल इंजेक्शन जहां पहले से कोई नहीं था।

अन्य डेटाबेस के लिए, यह पूरी तरह से बचने का गलत प्रकार है; एएनएसआई एसक्यूएल और अधिकांश डीबीएमएस एक स्ट्रिंग में एपोस्ट्रोफा को दर्शाने के लिए दोगुनी '' का उपयोग करते हैं, और किसी भी अन्य वर्णों से बच नहीं जाते हैं MySQL भी NO_BACKSLASH_ESCAPES कॉन्फ़िगरेशन विकल्प के माध्यम से इसका समर्थन कर सकता है; फिर से, PHP यह नहीं जान सकता कि यह विकल्प एक कनेक्शन बनाने से पहले उपयोग में है या नहीं।


Comments

Popular posts from this blog

asp.net - Javascript/DOM Why is does my form not support submit()? -

sockets - Delphi: TTcpServer, connection reset when reading -

javascript - Classic ASP "ExecuteGlobal" statement acting differently on two servers -