क्या Node.js में SQL इंजेक्शन को रोकना संभव है (अधिमानतः एक मॉड्यूल के साथ) जिस तरह से PHP ने तैयार किए गए कथन को उनके खिलाफ संरक्षित किया था।
यदि हां, तो कैसे? यदि नहीं, तो कुछ उदाहरण हैं जो मेरे द्वारा प्रदान किए गए कोड को बायपास कर सकते हैं (नीचे देखें)।
कुछ संदर्भ:
मैं नोड- Mysql मॉड्यूल का उपयोग करके Node.js + MySql से मिलकर बैक-एंड स्टैक के साथ एक वेब एप्लिकेशन बना रहा हूं । प्रयोज्य परिप्रेक्ष्य से, मॉड्यूल बहुत अच्छा है, लेकिन इसने अभी तक PHP के तैयार किए गए विवरणों के बारे में कुछ भी लागू नहीं किया है (हालांकि मुझे पता है कि यह टूडू पर है )।
मेरी समझ से, अन्य बातों के अलावा, तैयार किए गए PHP के कार्यान्वयन ने SQL इंजेक्शन की रोकथाम में बहुत मदद की । मुझे चिंता है, हालाँकि, मेरा नोड.जेएस ऐप समान हमलों के लिए खुला हो सकता है, यहां तक कि डिफ़ॉल्ट रूप से प्रदान किए गए स्ट्रिंग से बचने के साथ (नीचे कोड स्निपेट में)।
नोड- mysql नोड के लिए सबसे लोकप्रिय mysql कनेक्टर प्रतीत होता है। इसलिए, मैं सोच रहा था कि अन्य लोग इस मुद्दे को ध्यान में रखते हुए क्या कर रहे हैं (यदि कुछ भी हो) - या अगर यह नोड के साथ एक मुद्दा है। (यह सुनिश्चित नहीं है कि यह कैसे नहीं होगा, क्योंकि उपयोगकर्ता / क्लाइंट-साइड इनपुट शामिल है)।
क्या मुझे समय - समय पर नोड-मायस्क्-मूल पर स्विच करना चाहिए , क्योंकि यह तैयार किए गए बयान प्रदान करता है? मुझे ऐसा करने में संकोच हो रहा है, क्योंकि यह नोड-मैस्कल जितना सक्रिय नहीं लगता है (हालांकि इसका मतलब यह हो सकता है कि यह पूरा हो गया है)।
यहाँ उपयोगकर्ता पंजीकरण कोड का एक स्निपेट है, जिसमें क्रमशः साइट-स्क्रिप्टिंग और स्क्वायर इंजेक्शन लगाने से रोकने के लिए नोड-माय्सक्कल के तैयार स्टेटमेंट-जैसे सिंटैक्स (जो, जैसा कि मैंने ऊपर बताया है, कैरेक्टर एस्केपिंग है) के साथ सैनिटाइजर मॉड्यूल का उपयोग करता है।
// Prevent xss
var clean_user = sanitizer.sanitize(username);
// assume password is hashed already
var post = {Username: clean_user, Password: hash};
// This just uses connection.escape() underneath
var query = connection.query('INSERT INTO users SET ?', post,
function(err, results)
{
// Can a Sql injection happen here?
});