Previniendo la inyección de SQL en Node.js

¿Es posible evitar las inyecciones de SQL en Node.js (preferiblemente con un módulo) de la misma manera que PHP tenía declaraciones preparadas que protegían contra ellos?

¿Si es así, cómo? Si no,cuales son algunos ejemplos eso podría pasar por alto el código que he proporcionado (ver más abajo).

Algún contexto:

Estoy creando una aplicación web con un back-end stack que consiste en Node.js + MySql usando elnodo-mysql módulo. Desde la perspectiva de la usabilidad, el módulo es excelente, pero aún no ha implementado algo similar a PHPDeclaraciones preparadas (aunque soy consciente de que está en elque hacer).

Desde mi entendimiento, la implementación de PHP de declaraciones preparadas, entre otras cosas,ayudó mucho En la prevención de inyecciones SQL. Sin embargo, me preocupa que mi aplicación node.js pueda estar abierta a ataques similares,incluso con la cadena de escape proporcionada por defecto (como en el fragmento de código a continuación).

node-mysql parece ser el conector mysql más popular para node.js, por lo que me preguntaba qué podrían estar haciendo otras personas (si acaso) para explicar este problema, o si es un problema con node.js, para empezar. (No estoy seguro de cómo sería esto, ya que está involucrada la entrada del usuario / lado del cliente).

¿Debo cambiar anodo-mysql-native Por el momento, ya que proporciona declaraciones preparadas? No me atrevo a hacerlo, porque no parece estar tan activo como node-mysql (aunque eso puede significar que está completo).

Aquí hay un fragmento del código de registro del usuario, que utiliza eldesinfectante módulo, junto con la sintaxis similar a una declaración preparada por node-mysql (que, como mencioné anteriormente, hace que el carácter se escape), para evitar las secuencias de comandos entre sitios y las inyecciones de SQL, respectivamente:

// 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?
   });

Respuestas a la pregunta(5)

Su respuesta a la pregunta