0
我正在使用Node和node-mysql包構建網站。如何在使用LIKE運算符時防止SQL注入?
app.get('/api/tags', function(req, res) {
var term = req.query.term;
var query =
'SELECT \
t.tagName \
FROM tags t \
JOIN screencastTags st \
ON st.tagName = t.tagName \
JOIN screencasts s \
ON s.screencastId = st.screencastId \
WHERE s.status = \'approved\' AND t.tagName LIKE \'%' + term + '%\' \
GROUP BY t.tagName \
LIMIT 5';
connection.queryAsync(query).spread(function(tags) {
tags = tags.map(function(tag) { return tag.tagName });
res.send(tags);
})
})
這裏我用從查詢字符串的值 - term
- 返回的標籤列表。
我的問題是:當我使用LIKE運算符時,如何防止SQL注入?
我試圖
var query =
'SELECT \
t.tagName \
FROM tags t \
JOIN screencastTags st \
ON st.tagName = t.tagName \
JOIN screencasts s \
ON s.screencastId = st.screencastId \
WHERE s.status = \'approved\' AND t.tagName LIKE \'%' + conneciton.escape(term) + '%\' \
GROUP BY t.tagName \
LIMIT 5';
但產生無效的SQL。
謝謝 - 我現在就測試一下。我在應用程序的其他地方使用'?',但我認爲以當前的形式進行檢查會更簡單。另外,'?'不等同於預先準備好的語句。 –