这更是一个关于净化的一般问题。文档和我的评论只是警告存在问题,并且没有完美的不可渗透系统。使用像Sequelize.Op这样的工具可以帮助减轻风险。例如,如果您让某人输入要搜索的短语。某人可以键入%' UNION SELECT password FROM Users where username LIKE '%。 如果您没有对其进行净化并且它进入原始查询如sequelize.query("SELECT x FROM y WHERE x like '%" + query + "%'", { type: models.sequelize.QueryTypes.SELECT}),则可能会出现问题。 - Michael McCabe
除了同意McCabe的答案外,我想补充一点,sequelize至少可以处理未转义的字符串,这可以说是处理SQL注入问题的重要部分。即使您想编写自定义查询,也可以使用替换方式实现,如此处第一句所述:"...replacements are escaped and inserted into the query by sequelize before the query is sent to the database..."。请注意,sequelize会在将查询发送到数据库之前对替换内容进行转义和插入。
%' UNION SELECT password FROM Users where username LIKE '%
。 如果您没有对其进行净化并且它进入原始查询如sequelize.query("SELECT x FROM y WHERE x like '%" + query + "%'", { type: models.sequelize.QueryTypes.SELECT})
,则可能会出现问题。 - Michael McCabe