我用 Zip Bomb 來保護我的伺服器
我用 Zip Bomb 來保護我的伺服器
發生的情況是:對方收到檔案後,讀取標頭得知這是壓縮檔,因此嘗試解壓那個 1MB 的檔案來找他們要的內容。但檔案會不斷膨脹,直到耗盡記憶體、伺服器崩潰。1MB 的檔案會解壓成 1GB,這已足以讓多數機器人失敗。不過對於那些死纏爛打的腳本,我就給它 10MB 的檔案,解壓後會變成 10GB,立刻把腳本搞掛。
dd if=/dev/zero bs=1G count=10 | gzip -c > 10GB.gz
dd:用於複製或轉換資料的指令。 if:輸入檔案,這裡指定 /dev/zero,它會產生無限的零位元組串流。 bs:區塊大小,設為 1GB(1G),代表 dd 會以 1GB 為單位讀寫。 count=10:代表處理 10 個區塊、每個 1GB,因此會產生 10GB 的零資料。 middleware
if (ipIsBlackListed() || isMalicious()) { header("Content-Encoding: gzip"); header("Content-Length: ". filesize(ZIP_BOMB_FILE_10G)); // 10 MB readfile(ZIP_BOMB_FILE_10G); exit; }