2011-01-13 13 views
12

¿Ustedes saben de una librería/función sólida en Javascript para limpiar la entrada del usuario?Cualquiera sabe una biblioteca/función sólida en Javascript para limpiar la entrada del usuario

Principalmente para prevenir ataques XSS y el género.

Sería una ventaja si dicha biblioteca tenía la opción de permitir que ciertas etiquetas etc.

EDIT: estoy usando Node.js en el backend. Es por eso que necesito una biblioteca de JavaScript para ese tipo de cosas.

personas están recomendando una parte de Google Caja aquí: Preventing XSS in Node.js/server side javascript

Pero yo estaba esperando para obtener más opciones.

+3

Personalmente, creo que la entrada de lavado debe hacerse por razones semánticas, no razones de seguridad. La familia de ataques tipo XSS es realmente un problema ** de salida ** y necesita "proteger" diferentes dominios de salida de diferentes maneras. Esas amenazas de seguridad realmente no pueden resolverse en el momento de la entrada sin degradar potencialmente la funcionalidad de su aplicación. – Pointy

+0

Ese es un buen punto @Pointy, pero probablemente quieras filtrar la entrada del usuario por varias razones. – arnorhs

+0

@amorhs - sí, creo que es bueno filtrar la entrada por razones semánticas: los números de teléfono deben parecerse a los números de teléfono, etc. Pero a veces no hay una buena razón para limitar la entrada (como los campos "Comentarios" o "Notas"). Tal vez un cliente tiene una buena razón para incluir "&" o "<" en su texto. ¡Algunas personas tienen apóstrofes o símbolos en sus nombres! – Pointy

Respuesta

13

utilizo node-validator por chriso.

Ejemplo

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

Es importante tener en cuenta que a partir de v3 de validator.js, el método xss() está en desuso. Chris (el autor de validator.js) ahora está recomendando que las personas usen la biblioteca de Caja de Google. Puede encontrar más información aquí: https://github.com/chriso/validator.js/commit/2d5d6999541add350fb396ef02dc42ca3215049e –

Cuestiones relacionadas