2011-01-13 15 views
12

को साफ करने के लिए जावास्क्रिप्ट में कोई भी ठोस लाइब्रेरी/फ़ंक्शन जानता है क्या आप उपयोगकर्ता इनपुट को साफ करने के लिए जावास्क्रिप्ट में एक ठोस लाइब्रेरी/फ़ंक्शन के बारे में जानते हैं।उपयोगकर्ता इनपुट

मुख्य रूप से एक्सएसएस हमलों और प्रकार को रोकने के लिए।

यह एक से अधिक हो सकता है अगर कहा पुस्तकालय कुछ टैग की इजाजत दी आदि

संपादित करने का विकल्प था: मैं बैकएंड पर Node.js उपयोग कर रहा हूँ। यही कारण है कि मुझे उस तरह की चीज़ के लिए जावास्क्रिप्ट लाइब्रेरी चाहिए।

लोग गूगल काजा यहाँ का एक हिस्सा संस्तुत कर रहे हैं: Preventing XSS in Node.js/server side javascript

लेकिन मैं और अधिक विकल्प प्राप्त करने की उम्मीद कर रहा था।

+3

व्यक्तिगत रूप से, मुझे लगता है कि इनपुट स्क्रबिंग अर्थ कारणों से, न सुरक्षा कारणों के लिए किया जाना चाहिए। एक्सएसएस-जैसे हमलों का परिवार वास्तव में एक ** आउटपुट ** समस्या है, और आपको अलग-अलग तरीकों से विभिन्न आउटपुट डोमेन को "सुरक्षित" करने की आवश्यकता है। उन सुरक्षा खतरों को वास्तव में आपके आवेदन कार्यक्षमता को कमजोर किए बिना इनपुट समय पर हल नहीं किया जा सकता है। – Pointy

+0

यह एक अच्छा बिंदु @ पॉइंटी है - लेकिन आप शायद कई कारणों से फ़िल्टर उपयोगकर्ता इनपुट करना चाहते हैं। – arnorhs

+0

@amorhs - हाँ, मुझे लगता है कि अर्थपूर्ण कारणों के लिए इनपुट फ़िल्टर करना अच्छा होता है - फ़ोन नंबर फ़ोन नंबरों की तरह दिखना चाहिए, लेकिन कभी-कभी इनपुट को सीमित करने का कोई अच्छा कारण नहीं है (जैसे "टिप्पणियां" या "नोट्स" फ़ील्ड)। हो सकता है कि किसी ग्राहक के पास उनके टेक्स्ट में "&" या "<" शामिल करने का एक अच्छा कारण हो। कुछ लोगों के नाम पर apostrophes या ampersands है! – Pointy

उत्तर

13

मैं chriso द्वारा node-validator का उपयोग करें।

उदाहरण

var check = require('validator').check, 
    sanitize = require('validator').sanitize 

// Validate 
check('[email protected]').len(6, 64).isEmail();  //Methods are chainable 
check('abc').isInt();        //Throws 'Invalid integer' 
check('abc', 'Please enter a number').isInt();  //Throws 'Please enter a number' 
check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/); 

// Sanitize/Filter 
var int = sanitize('0123').toInt();     //123 
var bool = sanitize('true').toBoolean();    //true 
var str = sanitize(' \s\t\r hello \n').trim();  //'hello' 
var str = sanitize('aaaaaaaaab').ltrim('a');  //'b' 
var str = sanitize(large_input_str).xss(); 
var str = sanitize('&lt;a&gt;').entityDecode();  //'<a>' 
+1

यह ध्यान रखना महत्वपूर्ण है कि validator.js के v3 के रूप में, xss() विधि बहिष्कृत है। क्रिस (validator.js के लेखक) अब सिफारिश कर रहे हैं कि लोग Google की काजा लाइब्रेरी का उपयोग करें। अधिक जानकारी यहां मिल सकती है: https://github.com/chriso/validator.js/commit/2d5d6999541add350fb396ef02dc42ca3215049e –

संबंधित मुद्दे