Node.js 节点Mysql转义-Mysql.Escape()/Mysql.EscapeId()
我使用的是mysql节点:但我对默认的清理有点困惑,Node.js 节点Mysql转义-Mysql.Escape()/Mysql.EscapeId(),node.js,node-mysql,mysqljs,Node.js,Node Mysql,Mysqljs,我使用的是mysql节点:但我对默认的清理有点困惑,mysql.Escape()vsmysql.EscapeId(),以及?vs?的使用。医生说 默认清理 将对象传递给.escape()或.query()时,将使用.escapeId() 避免对象键中的SQL注入 我看到了Object这个词,那么这是否意味着我仍然应该逃避这样的查询 updatetable SET updated\u at=userInput,其中name=userInput Mysql.Escape()与Mysql.Escape
mysql.Escape()
vsmysql.EscapeId()
,以及?
vs?
的使用。医生说
默认清理
将对象传递给.escape()或.query()时,将使用.escapeId()
避免对象键中的SQL注入
我看到了Object这个词,那么这是否意味着我仍然应该逃避这样的查询
updatetable SET updated\u at=userInput,其中name=userInput
Mysql.Escape()与Mysql.EscapeId()的比较这两种功能的区别是什么。文档说mysql.escape使用mysql.escapeId。我知道它们都会对输入进行消毒,但您是否会使用其中一种 ?vs???
文档可以互换使用
?
和?
。它们的意思是一样的吗 文档描述了escape()和escapeId()的功能。需要转义值时,请使用escape()。需要转义标识符(例如表、数据库或列名)时,请使用escapeId() 文档描述了escape()和escapeId()的功能。需要转义值时,请使用escape()。需要转义标识符(例如表、数据库或列名)时,请使用escapeId() 我与mysqljs的维护人员进行了交谈,并确认该包在默认情况下不会逃避查询
将对象传递给.escape()或.query()时,将使用.escapeId()
避免对象键中的SQL注入
上面的语句意味着如果使用以下方法之一,查询将被转义
let args = { name: 'myname' otherVals: 'blah blah'};
mysql.query('Insert INTO table SET ?',args);
let name = 'test';
mysql.query('INSERT INTO table SET name = ?', [name]);
对于问题的第二部分:
?
和escapeId
用于标识符,?
和escape()
用于值 我与mysqljs的维护人员进行了交谈,并确认该包在默认情况下不会逃避查询
将对象传递给.escape()或.query()时,将使用.escapeId()
避免对象键中的SQL注入
上面的语句意味着如果使用以下方法之一,查询将被转义
let args = { name: 'myname' otherVals: 'blah blah'};
mysql.query('Insert INTO table SET ?',args);
let name = 'test';
mysql.query('INSERT INTO table SET name = ?', [name]);
对于问题的第二部分:
?
和escapeId
用于标识符,?
和escape()
用于值 “插入表集”是一个非常好的技巧,应该出现在节点mysql示例中。“插入表集”是一个非常好的技巧,应该出现在节点mysql示例中。