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

打造高安全性 PHP 網站的五大實務守則

     編輯:PHP 相關知識

前言

PHP 是最流行的 Web 開發語言,但也因普及度高而成為駭客主要攻擊目標。以下五大守則能有效降低風險。

守則一:善用錯誤回報

開發階段務必開啟完整錯誤回報,上線前關閉:

// 開發環境
error_reporting(E_ALL);
ini_set('display_errors', '1');

// 正式環境
error_reporting(0);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');

錯誤訊息是除錯與發現漏洞的最佳工具,切勿忽略。

守則二:關閉危隬的 PHP 設定

以下設定在 PHP 5.4+ 已移除,舊版務必關閉:

  • register_globals = Off — 防止變數注入
  • magic_quotes_gpc = Off — 避免重複轉義造成資料汙染
  • magic_quotes_runtime = Off
  • magic_quotes_sybase = Off

可在 php.ini 或 .htaccess 設定:

php_flag register_globals 0
php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0

守則三:嚴格驗證使用者輸入

永遠不信任任何外部輸入($_GET、$_POST、$_COOKIE、$_SERVER)。使用白名單驗證:

// 只允許英數字與底線
$username = preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username']) ? $_POST['username'] : ''; 

守則四:防範跨站腳本攻擊(XSS)

輸出到 HTML 時必須編碼:

echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

若需允許有限 HTML,使用 HTML Purifier 白名單過濾。

守則五:防範 SQL 注入

使用預處理語句:

$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
$stmt->execute([':username' => $username]);
$user = $stmt->fetch();

若必須拼接 SQL,務必使用 mysqli_real_escape_string() 或 PDO::quote()。

總結

安全非一次性工作,而是持續的程序:程式碼審查、依賴更新、滲透測試、日誌監控。將上述守則內化為團隊開發規範,才能真正降低風險。

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