'')、移除 -- 註釋、參數兩側加單引號。[@table] 包裹。PreparedStatement,特別是來自前端的查詢條件。// 易受攻擊 personid = getParameter(req, "personid").trim(); sql = "SELECT * FROM table WHERE userid=" + userid + " AND addrcontactid=" + personid;
攻擊 URL:?personid=6414 or 2=2 → SQL 變為 ... addrcontactid=6414 or 2=2,導致條件永真。
function SafeRequest(paraName, paraType) {
val = Request(paraName);
if (paraType == 1) { // 數值型
if (!IsNumeric(val)) { Response.Write("參數必須為數字"); Response.End; }
} else { // 字串型
val = Replace(val, "'", "''");
}
return val;
}
PHP 現代寫法:請直接使用 PDO 或 MySQLi 預處理語句,勿自行拼裝 SQL。