避免網頁被掛馬除了撰寫安全的網頁應用程式及建置資安設備外,也應該落實存取權限最小化、帳號權限隔離的安全強化設定,常見的網頁掛馬型態有網頁竄改、資料庫竄改。防止網頁被竄改可依據檔案、目錄之所屬任務,從Filesystem ACL(Access Control List)設定存取權限、動態頁面執行權限設定,防止資料庫竄改能以網頁應用程式功能特性,切割帳號權限、存取控管。
多數網站的檔案、目錄是不需要具有寫入權限,會需要寫入權限多半是網頁應用程式提供給使用者上傳靜態檔案的功能,或是網站本身使用輕量型資料庫(Microsoft Access Database、SQLite),所以在Filesystem ACL上只需針對上傳之目標目錄和輕量型資料庫之檔案開啟寫入權限,其餘檔案目錄皆無寫入權限。網頁伺服器的預設設定是所有目錄有動態頁面執行權限。 網站中存放圖檔、上傳目的目錄、CSS、Javascript等其他靜態檔案的目錄,可於網頁伺服器中設定為無動態頁面執行權限。整個網站的存取權限設定,應為可以寫入的目錄,不能執行。可以執行的目錄,不能寫入。若將網站檔案、目錄的執行權限、存取權限畫成兩張圖並且以藍色、橘色區分。兩張圖重疊後未出現橘色區塊表示網站檔案、目錄已達到存取權限最小化。若在有寫入權限的目錄同時有動態頁面執行權限,攻擊者可能繞過上傳檔案類型之限制,將惡意程式上傳至網站,以利竄改網頁掛馬、竊取網站原始碼、資料庫等機敏資訊。
.jpg)
資料庫帳號存取控管,可依照網頁應用程式存取資料庫的特性分別開設不同帳號、不同存取權限,以降低資料庫糟竄改的可能。例如企業官方網站,可將資料庫帳號分別切成使用者前台、管理者後台。前台有多數功能只需Select權限不需Insert、Delete、Update權限,例如:News、Product、Support等,將這些只需Select權限的Table取消Insert、Delete、Update權限。如果前台有會員功能、計數器等,則依該功能需求啟用存取權限。若有電子商務網站更適合以多組帳號做權限隔離,例如產品資訊、會員系統、購物車系統、金流系統、訂單系統、管理系統、供應商系統等分別開設多組帳號,針對各個帳號依照各系統需求,設定合適的Table存取權限。盡可能減少帳號對Table的存取範圍,並且嚴謹設定Table存取權限,以利分散資料遭竄改、竊取的風險。
為方便管理、設定資料庫帳號權限,可參閱下列清單表格
.jpg)
圖片來源:由作者提供