0
從用戶輸入中簡單地轉義危險字符然後直接運行SQL查詢而不是使用預準備語句是否可以接受?是否可以防止沒有預準備語句的SQL注入(Node.js和MSSQL)
例如,我可以在輸入中使用以下函數,構建查詢並執行它?
function mysql_real_escape_string (str) {
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
switch (char) {
case "\0":
return "\\0";
case "\x08":
return "\\b";
case "\x09":
return "\\t";
case "\x1a":
return "\\z";
case "\n":
return "\\n";
case "\r":
return "\\r";
case "\"":
case "'":
case "\\":
case "%":
return "\\"+char; // prepends a backslash to backslash, percent,
// and double/single quotes
}
});
}
可能是這可以幫助你https://github.com/mysqljs/mysql#escaping-query-values – Garfield
這絕對是[XY問題](https://meta.stackexchange.com/a/66378/346723),應該永遠不會出現直接運行查詢和手動嘗試避免注入的情況,比準備語句更安全或更好的情況。你需要做什麼? – ATaco
基本上,我花了一整天的時間試圖弄清楚如何使用準備好的語句(對於Node.js和MSSQL),我沒有太多的運氣。 (我是這個新手)。我希望有一個簡單的選擇。 – cleverpaul