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

PHP 程式設計師最易犯的 10 大錯誤與修正

     編輯:PHP 相關知識

PHP 靈活但易誤用。以下 10 種高發錯誤多涉及安全,逐項拆解修正方案。

  1. 未轉義 HTML 實體 (XSS)

    用戶輸入直接 echo $_GET['username'],攻擊者可注入 <script>...。

    修正: echo htmlspecialchars($_GET['username'], ENT_QUOTES);

  2. 未轉義 SQL 輸入 (SQL Injection)

    依賴 magic_quotes_gpc (已移除) 或未過濾所有來源 (含 Cookie、Header)。

    修正: 統一使用 預處理語句 (mysqli/PDO) 或 mysqli_real_escape_string()。

  3. HTTP Header 相關函式調用時機錯誤

    header()、session_start()、setcookie() 必須在**任何輸出前**調用。output_buffering 設定不一致導致開發環境正常、上線失敗。

    修正: 代碼開頭調用 Header 函式,關閉 output_buffering 開發測試。

  4. Include/Require 使用不可信資料

    include($_GET['filename']) 導致任意檔案讀取/遠端代碼執行 (RFU)。

    修正: 白名單驗證:if (in_array($_GET['file'], $allowed)) include($_GET['file']);

  5. 語法錯誤 (括號、分號、引號漏寫)

    最常見低級錯誤。

    修正: 用支援語法高亮、即時檢查的 IDE (PhpStorm/VS Code),嚴禁記事本寫代碼。

  6. 極少使用 OOP

    面向過程代碼難維護、難擴展、難測試。

    修正: 掌握封裝、繼承、多型、SOLID,引入成熟框架 (Laravel/Symfony) 學習最佳實務。

  7. 不使用框架

    95% 專案做 CRUD,重複造輪子。

    修正: 採用 MVC 框架 (Laravel/CodeIgniter/Yii) 專注業務邏輯。

  8. 不知 PHP 內建功能,重造輪子

    如 exec() 執行指令、escapeshellcmd() 安全過濾,許多開發者不知情。

    修正: 寫代碼前查 php.net 手冊、Google 搜尋現成函式。

  9. 使用舊版 PHP (5.6/7.0 以下)

    效能低、安全漏洞多、無現代語法 (標量型別、返回型別、匿名類等)。

    修正: 升級至 PHP 8.1+,兼容性調整成本低,收益巨大。

  10. 雙重轉義引號

    開發環境 magic_quotes=Off 手動 addslashes(),上線環境 On 自動再轉一次,輸出 It\'s。

    修正: 統一關閉 magic_quotes,手動控制;或檢測 get_magic_quotes_gpc() 動態處理 (PHP 5.4+ 已移除此功能)。

養成**安全第一、查閱手冊、用框架、升級版本**習慣,可避開 90% 坑。

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