【问题标题】:Better way to query database with array使用数组查询数据库的更好方法
【发布时间】:2021-07-11 18:45:52
【问题描述】:

以下是我当前的代码,但是,我很确定它很糟糕。它可以工作并且可以完成工作,但我认为我可能会成为当前解决方案的 SQL 注入的受害者。我对 Javascript 和 SQL 都很陌生,所以请原谅我的愚蠢问题。

app.post('/api/v1/relevantEvents', async (req, res) => {

    try {
        let events = req.body.cookie;
        if (!events) events = [];
        let a = "";
        for (let i = 0; i < events.length; i++) {
            a += "subject = '" + events[i] + "'";
            if (i !== events.length - 1) a += " OR ";
        }
        const allEvents = await pool.query("SELECT * FROM events WHERE subject IS NULL or " + a);
        res.json(allEvents.rows);
    } catch(err) {
        console.error(err.message);
    }
});

请求的主体是一个数组,其中的值存在于某行中。

【问题讨论】:

    标签: javascript sql node.js postgresql express


    【解决方案1】:

    确实,您的 SQL 查询存在 SQL 注入的风险。因此,我建议更改常量allEvents,假设a 是字符串/文本:

    const allEvents = await pool.query("SELECT * FROM events WHERE subject IS NULL or $1::text", [a]);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多