ASP/Access 架構網站最怕資料庫被直接下載。本文從「偽裝檔名」到「多層加密」提供 9 種防護手段,依據資產價值選擇適當層級。
| # | 方法 | 操作要點 | 安全性 | 適用場景 |
|---|---|---|---|---|
| 1 | 修改資料庫檔名 | 改為難以猜測名稱 (如 data_20240101_x7k.mdb) | ★☆☆☆☆ | 僅防禦路徑猜測,路徑洩露即失效 |
| 2 | 副檔名改為 .asa/.asp | 配合 IIS 解析: 1. OLE 物件欄位插入 <% 文字檔2. IIS 以 ASP 解析 → 回傳 500 錯誤,無法下載 | ★★☆☆☆ | 需 Access 操作 OLE 欄位,較繁瑣 |
| 3 | 檔名前加 # 或空格 | 命名 #data.mdb 或 data 123.mdb → HTTP 解析時 # 後內容被截斷/空格編碼為 %20,下載失效 | ★★☆☆☆ | 利用 HTTP 協定特性,但部分鍛工具可繞過 |
| 4 | 資料庫加密 + 設定密碼 | 1. 工具→安全性→加密/解密 → 另存為新檔 2. 獨佔模式開啟 → 工具→安全性→設定資料庫密碼 3. 連接字串加 PWD=密碼 | ★★★☆☆ | 防竊取檔案後直接開啟,**但 Access 加密極弱,專用工具秒破** |
| 5 | 將資料庫移出 Web 目錄 | 放置於 wwwroot 上層目錄 (如 D:\App_Data\),連接字串用實體路徑 | ★★★★☆ | **最推薦、成本最低**,「不在 Web 根目錄下」即無法直接 URL 存取 |
| 6 | IIS 設定 MIME 對應拒絕 .mdb | IIS 管理員 → MIME 類型 → 移除 .mdb 或設為 application/octet-stream 並啟用「拒絕服務」 | ★★★☆☆ | 防直接下載,但不防包含漏洞腳本讀取 |
| 7 | 資料夾權限鎖定 (NTFS) | 資料庫資料夾 → 安全性 → 移除 Users/Everyone,僅給 IIS 執行身分 (IUSR/ApplicationPoolIdentity) 讀取權限 | ★★★★☆ | 作業系統層面存取控制,最可靠 |
| 8 | 升級至 SQL Server / SQLite | 遷移至具備完整權限體系、加密、備份的資料庫引擎 | ★★★★★ | 根治 Access 架構缺陷,企業級應用必選 |
| 9 | Web 應用防火牆 (WAF) + 程式碼審計 | 部署 WAF 規則攔截 SELECT * FROM、路徑遍歷等攻擊;定期審計 SQL 注入、路徑洩露漏洞 | ★★★★★ | 纵深防禦,配合上層應用安全 |
核心原則:**「不在 Web 根目錄、不依賴單一機制、假設洩露也要安全」**。