這一篇講的是我們在接手別人的網站時,最常發現的一個資安問題。而且它不是「可能有風險」的那種,是直接把東西放在外面的那種。

備份檔為什麼會跑到網路上

情境幾乎都一樣:要改網站之前,先備份一下比較安心。

於是把整個網站目錄打包成一個壓縮檔,資料庫也匯出一份。問題是打包完之後,那個檔案放在哪裡?

最順手的位置,就是網站目錄裡面。因為你人就在那裡,指令下下去檔案就產生了,不用再搬。

而網站目錄裡面的東西,是對外公開的。那是網站的意思。

所以 backup.zip 這個檔案放在網站根目錄,就等於任何人在你的網址後面加上 /backup.zip 都能直接下載。

這件事沒有任何徵兆。網站完全正常,沒有錯誤訊息,紀錄檔裡那筆下載看起來跟一般訪客沒兩樣。

那個檔案裡面有什麼

如果是整個網站目錄的壓縮檔,裡面會有網站的設定檔。設定檔裡面會有:

  • 資料庫的位址、帳號、密碼
  • 寄信用的信箱帳號密碼
  • 金流、簡訊、地圖等各種服務的金鑰
  • 後台的加密設定

如果是資料庫的匯出檔,裡面會有:

  • 所有客戶的姓名、電話、信箱、地址
  • 所有的詢價和訂單紀錄
  • 後台管理員的帳號與密碼(加密過,但可以慢慢破)

兩種都拿到的話,等於整個網站連同客戶資料全部交出去。而且對方不需要入侵任何東西,他只是下載了一個公開的檔案。

客戶個資外洩在台灣是有法律責任的,這不只是網站安全的問題。

為什麼說檔名是可以猜的

有人會想:檔名只有我知道,應該找不到吧。

實際上備份檔的命名方式非常固定,大概就這幾種組合:

  • 功能名稱:backup、bak、back、dump、db
  • 網站名稱:你的網域去掉點,或是公司名稱縮寫
  • 日期:20261110、2026-11-10、1110
  • 副檔名:.zip、.rar、.tar.gz、.sql、.7z

把這幾組排列組合,總數大概幾千種。自動化工具跑完幾千個網址只要幾分鐘,而且這種掃描是全網路無差別進行的,不需要有人特別針對你。

更直接的狀況是:搜尋引擎可能已經收錄了那個檔案。

如果有任何一個頁面連到它,或者你的主機允許列出目錄內容,搜尋引擎的爬蟲就會抓到。然後它就出現在搜尋結果裡,連猜都不用猜。

還有一種同樣常見:.sql 和 .tar.gz 這類檔案,有些主機的安全設定會擋住,但有些不會 —— 擋不擋跟主機怎麼設定有關,不能假設。

一分鐘自己確認

打開瀏覽器,在你的網址後面依序加上這些,看會不會跳出下載:

  • /backup.zip
  • /backup.sql
  • /db.sql
  • /backup.tar.gz
  • /www.zip
  • 你自己公司名稱或網域的縮寫 .zip

出現「找不到頁面」是正常的。如果開始下載,立刻把那個檔案刪掉。

另外再試一個:在網址後面加上 / 加上你放檔案的目錄名稱(例如 /uploads/、/files/)。如果出現一個檔案列表,那表示目錄內容是公開的,裡面所有東西都能被翻出來。這個設定要關掉。

最後一個檢查:到搜尋引擎搜尋 site:你的網域 zip,以及把 zip 換成 sql、rar、tar 各試一次。如果有東西出現,代表已經被收錄了,刪檔之外還要去搜尋引擎的管理工具送出移除。

正確的做法

原則只有一句:備份檔不要放在網站目錄裡面。

備份應該放在:

  • 網站目錄的上一層(網站讀不到的地方)
  • 或是完全不同的機器、雲端儲存空間

第二種同時解決了另一個問題:備份跟網站放在同一台機器上,機器壞掉的時候兩個一起沒了。這一點值得單獨講一篇。

如果因為某些原因備份一定要放在網站目錄裡(例如用面板的備份功能,預設路徑就在那裡),至少要做到兩件事:

  • 設定上擋掉從外部直接下載這些副檔名
  • 關掉目錄列表功能

但這是退而求其次。只要設定有一天被覆蓋掉,檔案就又公開了,而你不會知道。

我們接手一個網站的第一週,一定會做這幾件事:掃一遍網站目錄裡有沒有壓縮檔和匯出檔、確認目錄列表是關的、確認備份的實際存放位置在網站目錄之外。這件事花不到半小時,但它是少數「一次做完就長期有效」的資安動作。如果你剛才試出來真的下載到了東西,先刪掉,然後可以看一下我們的維護方案包含哪些檢查。