當前位置: 首頁> 最新文章列表> PHP 提交來源安全驗證方法詳解

PHP 提交來源安全驗證方法詳解

M66 2025-09-20

PHP 中如何確認提交來源

在PHP 開發中,確認表單提交來源對於防止偽造請求至關重要。通過以下方法可以有效識別提交請求是否來自預期頁面,提高網站的安全性。

檢查HTTP 引用頭

HTTP 引用頭包含了用戶訪問當前頁面的來源URL。通過檢測此頭,可以確認請求是否來自同一域名:

 if (isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'yourdomain.com') !== false) {
  // 請求來自同一域名
}

驗證HTTP POST 數據

POST 數據包含表單提交的信息。通過檢查特定字段(如隱藏字段)的值是否符合預期,可以驗證請求來源:

 if (isset($_POST['nonce']) && $_POST['nonce'] === 'expected_nonce') {
  // 請求來自預期的表單
}

使用CSRF 令牌

CSRF 令牌是一個在每次會話中隨機生成的字符串,可以在表單中作為隱藏字段提交,並與會話中的令牌進行比對:

 // 在會話中存儲 CSRF 令牌
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

// 在表單中包含隱藏字段
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">

// 檢查提交的令牌
if (isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
  // 請求來自預期的表單
}

使用Salt 驗證

Salt 是一個隨機字符串,將其添加到提交的數據中並進行散列處理,可以防止數據偽造:

 // 生成鹽
$salt = bin2hex(random_bytes(32));

// 將鹽添加到數據
$data = 'some_data' . $salt;

// 散列數據
$hash = hash('sha256', $data);

// 檢查提交的 hash
if (isset($_POST['hash']) && $_POST['hash'] === $hash) {
  // 請求來自預期的表單
}

總結

通過以上方法中的一種或多種組合,開發者可以在PHP 中有效確認表單提交的來源,從而防止偽造請求,提高Web 應用程序的安全性。