दिलचस्प पोस्ट
GIT समस्या की जांच करना कौन सी SQL क्वेरी तेज है? सम्मिलित मानदंड पर या कहाँ क्लॉज पर फ़िल्टर करें? क्या सी ++ प्रोग्रामर्स के साथ लोकप्रिय हो और फ़ंक्शंस सेट करें? सुंदर सूप के साथ एक विशेषता मान एक्स्ट्रेक्ट करना जेनेरिक विधि एकाधिक (या) प्रकार की बाधा एक्लिप्स में तैनाती निर्देशिका कहां है? टैबबारिटम का फ़ॉन्ट आकार बदलना जब उपयोगकर्ता सफ़ारी / क्रोम में विंडो बंद कर रहा है तो क्या मैं एक पुष्टिकरण संवाद पॉप अप कर सकता हूं? उपयोगकर्ता परिभाषित वर्ग की वस्तुओं की एक सूची छपाई स्काला में प्राथमिक कंस्ट्रक्टर में स्थानीय वर्ड / वैल को कैसे परिभाषित किया जाता है? Application_Error को फ़ायरिंग नहीं करते जब कस्टमरर्स = "चालू" इसी मॉडल में अन्य फ़ील्ड के आधार पर Django मॉडल फ़ील्ड डिफ़ॉल्ट आधार त्रुटि C2065: 'cout': अघोषित पहचानकर्ता स्विफ्ट में एक UIButton प्रोग्राममैटिक करें मैं टच सक्षम ब्राउज़र में एक स्पर्श के साथ एक मंडराना कैसे अनुकरण करूं?

एक जावास्क्रिप्ट स्ट्रिंग एसक्यूएल दोस्ताना बनाने

वहाँ एक जावास्क्रिप्ट स्ट्रिंग MySQL के लिए दोस्ताना NodeJS के लिए पारित करने के लिए दूर है? मैं अपने नोडजेएस सर्वर से एक ईमेल पता और क्वेरी को MySQL डाटाबेस में पास करने का प्रयास कर रहा हूं। जब एक नियमित रूप से उपयोगकर्ता नाम जैसे पाठ काम करता है ठीक है, लेकिन ईमेल पता नहीं है। एस्केप का इस्तेमाल करना सही जवाब नहीं है क्योंकि इसका अर्थ एसक्यूएल सम्मिलन के लिए नहीं है। मैं मान रहा हूं कि PHP फ़ंक्शन mysql_real_escape_string() की तर्ज पर मुझे कुछ चाहिए।

Solutions Collecting From Web of "एक जावास्क्रिप्ट स्ट्रिंग एसक्यूएल दोस्ताना बनाने"

यह पता चला है कि mysql_real_escape_string () बहुत तुच्छ है। प्रलेखन के अनुसार :

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

बहुत सरल लगता है, वास्तव में आप ऐसा कुछ कर सकते हैं:

 function mysql_real_escape_string (str) { return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) { switch (char) { case "\0": return "\\0"; case "\x08": return "\\b"; case "\x09": return "\\t"; case "\x1a": return "\\z"; case "\n": return "\\n"; case "\r": return "\\r"; case "\"": case "'": case "\\": case "%": return "\\"+char; // prepends a backslash to backslash, percent, // and double/single quotes } }); } 

नोट : मैंने इसे किसी भी प्रकार की यूनिट परीक्षा या सुरक्षा परीक्षा के माध्यम से नहीं चलाया है, लेकिन यह काम करने के लिए प्रतीत होता है – और, बस एक जोड़ा बोनस के रूप में, यह टैब, बैकस्पेस, और '%' को बचता है ताकि इसे भी इस्तेमाल किया जा सके OWASP की सिफारिशों के अनुसार (PHP मूल के विपरीत) प्रश्नों की तरह।

मुझे पता है कि mysql_real_escape_string() वर्ण सेट-अवगत है, लेकिन मुझे यकीन नहीं है कि जो भी लाभ होता है।

यहां पर इन मुद्दों पर एक अच्छी चर्चा है ।

अगर किसी को तलाश है, तो CUBRID RDBMS में escapeString () निम्नानुसार काम करता है:

 var _escapeString = function (val) { val = val.replace(/[\0\n\r\b\t\\'"\x1a]/g, function (s) { switch (s) { case "\0": return "\\0"; case "\n": return "\\n"; case "\r": return "\\r"; case "\b": return "\\b"; case "\t": return "\\t"; case "\x1a": return "\\Z"; case "'": return "''"; case '"': return '""'; default: return "\\" + s; } }); return val; }; 

यह CUBRID Node.js ड्राइवर से एक अंश है।

कठोर तरीके से सीखा है कि इस समारोह में संख्याएं गुजरने से पूरी प्रक्रिया को चुपचाप मरने के लिए उपयोग किया जाता है इसलिए मैं थोड़ा परीक्षण जोड़ता हूं:

 function mysql_real_escape_string (str) { if (typeof str != 'string') return str; return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) { switch (char) { case "\0": return "\\0"; case "\x08": return "\\b"; case "\x09": return "\\t"; case "\x1a": return "\\z"; case "\n": return "\\n"; case "\r": return "\\r"; case "\"": case "'": case "\\": case "%": return "\\"+char; // prepends a backslash to backslash, percent, // and double/single quotes } }); } 

केस स्टेटमेंट के बजाय एरे का उपयोग करना:

 var regex = new RegExp(/[\0\x08\x09\x1a\n\r"'\\\%]/g) var escaper = function escaper(char){ var m = ['\\0', '\\x08', '\\x09', '\\x1a', '\\n', '\\r', "'", '"', "\\", '\\\\', "%"]; var r = ['\\\\0', '\\\\b', '\\\\t', '\\\\z', '\\\\n', '\\\\r', "''", '""', '\\\\', '\\\\\\\\', '\\%']; return r[m.indexOf(char)]; }; //Implementation "Some Crazy String that Needs Escaping".replace(regex, escaper); 

यदि आप सीजेके पात्रों के साथ खेल रहे हैं http://en.wikipedia.org/wiki/CJK_characters या IOS / Android / अन्य मोबाइल के कुछ विशेष भावनात्मक चिह्न … जैसे " ‡ ‰ ™ © ✨" या decodeurIComponent (" xF3 \ xBE \ xAD \ xA0 ")।

आपको इस तरह मेरी my.cnf सेट करना होगा

 [client] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 skip-character-set-client-handshake