首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

有效防止 SQL 注入漏洞完整指南

     編輯:PHP 相關知識

四大核心防禦原則

  1. 參數轉義與加引號:單引號轉雙引號('')、移除 -- 註釋、參數兩側加單引號。
  2. 資料表名稱加中括號:動態表名用 [@table] 包裹。
  3. 避免動態 SQL:優先使用 PreparedStatement,特別是來自前端的查詢條件。
  4. 嚴格驗證資料:伺服器端檢查分號、引號、括號、SQL 關鍵字,善用正則表達式。

實例:PersonID 數值型注入

// 易受攻擊
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,導致條件永真。

ASP 風格安全請求函數(可移植至 PHP 邏輯)

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。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved