我听说准备MySQL查询会阻止注入。我正在使用nodejs,因此发现了MySql Preparing Queries。根据文档,
您可以使用mysql.format准备多次插入的查询 点,利用ID和值的正确转义。
这是否意味着我可以将未转义的内容放入userId
中并获得名为sql
的转义mysql请求?
代码是:
var sql = "SELECT * FROM ?? WHERE ?? = ?";
var inserts = ['users', 'id', userId];
sql = mysql.format(sql, inserts);
答案 0 :(得分:1)
很安全。
转义由sqlstring模块执行,您可以查看其源代码以获取更多信息,它很小。
您应该始终通过使用?
占位符或直接调用escape
来逃避值。但是,更建议使用占位符,因为它可以保护您免受可能忘记手动转义的情况的影响。