防止在Node.js中进行SQL注入

是否可以以与PHP具有防止它们攻击的Prepared语句相同的方式来防止在Node.js(最好是使用模块)中进行SQL注入。

如果是这样,怎么办?如果没有, 可能会绕过我提供的代码(请参见下文)。


一些上下文:

我正在使用node-mysql模块制作一个包含Node.js +

MySql的后端堆栈的Web应用程序。从可用性的角度来看,该模块很棒,但是它尚未实现类似于PHP的Prepared

Statements的功能(尽管我知道它在待办事项上)。

据我了解,除其他外,PHP的预准备语句实现极大地有助于防止SQL注入。不过,我担心我的node.js应用程序可能会遭受类似的攻击,即使默认情况下提供了字符串转义(如下面的代码片段)一样。

node-mysql似乎是node.js最受欢迎的mysql连接器,所以我想知道其他人可能正在做些什么(如果有的话)来解决这个问题-

或者甚至从一开始就与node.js有关的问题(由于涉及到用户/客户端输入,因此不确定如何实现)。

我对此很犹豫,因为它似乎不像node-mysql那样活跃(尽管这可能意味着它已经完成了)。

以下是用户注册代码的片段,该片段使用了sanitizer模块以及node-mysql的预准备的类似于语句的语法(如上所述,它进行字符转义),以防止跨站点脚本和sql注入:

// 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?

});

回答:

node-mysql当您已经使用库时,该库会自动执行转义。参见https://github.com/felixge/node-

mysql#escaping-query-values

以上是 防止在Node.js中进行SQL注入 的全部内容, 来源链接: utcz.com/qa/408234.html

回到顶部