rop*_*der 5 javascript mysql sql node.js sequelize.js
这可能有一个非常简单的答案,但我没有看到它。
我想使用 Sequelize 进行原始查询:
var sequelize = require('sequelize');
sequelize
.query("LOAD DATA LOCAL INFILE :file
INTO TABLE :table
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';",
null,
{raw:true},
{file: datasetPath, table: "dataset_" + datasetName})
Run Code Online (Sandbox Code Playgroud)
问题在于,替换字符串包含用于:file替换(这很好,因为它是路径)和:table替换(这很糟糕,因为它只是应该是一个未经修饰的表名,并且会破坏查询)的单引号。在表名替换的情况下如何避免这些引号?
谢谢。
如果您确定datasetName永远不会包含任何 SQL 注入的可能性,您可以直接将表名插入查询中,如下所示:
sequelize
.query("LOAD DATA LOCAL INFILE :file
INTO TABLE dataset_" + datasetName + "
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';",
null,
{raw:true}, {file: datasetPath})
Run Code Online (Sandbox Code Playgroud)
mwarren 发布的评论在这种情况下并没有真正起作用 - Sequelize 看到它是一个正在插入的字符串,并相应地对其进行转义。
| 归档时间: |
|
| 查看次数: |
7374 次 |
| 最近记录: |