網路安全一直是業界永恆的話題,人們一直在與黑客之間進行著從不間斷的較量。那麼作為普通的乙個**如何能用最簡單的方法去防止自己的網頁被篡改呢?或者至少在當自己的網頁被篡改後能以最快的速度得知呢?在本文中,將介紹使用cron和php結合的方法,檢查某些指定的網頁是否被篡改。
這個方法的核心思路其實很簡單:「建立乙個簡單的資料庫,其中儲存了需要保護的檔案的hash值,並且採用unix的cron排程方法,定期檢測實際檔案的hash值和原始檔案的hash值,並且形成報告。」
當然,其中要涉及遞迴遍歷伺服器檔案目錄下的大量檔案,並且要計算它們的hash值,下面將具體講解其過程。
資料庫設計
我們先來看下資料庫應該如何設計。為了安全起見,我們應該單獨建立乙個資料庫以存放需要保護檔案的。如果讀者的**是託管**的話,建議使用cpanel去建立資料庫並且使用強密碼(比如可以用strongpasswordgenerator.com這個**去產生各長度位數的密碼,至少要8位以上)。我們將資料庫命名為baseline,表設計如下:
在baseline表中,包含了乙個長度很大的字段file_path,存放的是要保護檔案的在伺服器上的路徑,而file_hash(用40位的長度去進行sha1演算法),而acct欄位則表示是否監視賬號還是網域名稱。我們並將file_path設定為主鍵。
而tested表中的tested欄位則儲存每次掃瞄的具體時間,而account欄位和baseline表的acct欄位是相同的,以允許分別單獨掃瞄賬號還是網域名稱。
定義php檔案前的一些準備工作
接下來,我們為開發php檔案做一些準備工作,首先要定義一些php檔案中要用到的常量。
path。這個是要在你的伺服器上進行掃瞄的起始路徑,通常是指代documentroot。記得不要使用windows中的反斜槓因為apache和php都使用的是正向的斜槓。
訪問資料庫要涉及的位址,使用者密碼等引數,如server('localhost'),user,passwordanddatabase
以及一些其他變數如下:
儲存需要檢查副檔名的陣列。在這個例子中,只用陣列儲存了如.php、.htm和.js格式的檔案。在本文中,如果使用了乙個空的陣列,則預設檢查所有格式的檔案(這是最安全的,但耗費不少資源)。
需要排除檢查的目錄。一般不建議這麼做,如果確實需要不檢查某個目錄,則可以將其放置在本文中的乙個陣列中
此外還有幾個引數需要設定,包括$file陣列,初始化為空,$report初始化為空字串以及$act字串(配合資料表中的account/acct欄位使用)。
開始編碼
下面我們正式編碼,先看如下**:
下面我們來講解下上面的**。首先,使用的是php中的兩個內建函式recursivedirectoryiterator(獲得指定目錄下的所有檔案和目錄),然後進行迴圈遍歷,並且檢查每乙個目錄是否在需要排除檢測的目錄之中,如果包含在檢測列表中的話同時檢測是否有需要排除檢測的檔案。最後將最終需要檢測的檔案放置在陣列$files中,這個陣列的鍵為檔案的名稱,而值則為經過sha1演算法運算後的雜湊值。所以檔案的數量可以馬上通過以下方法獲得
然後,我們要從tested表中,獲得最新一次經過雜湊掃瞄的檔案的時間,如下**:
接下來,要對比的是經過hash掃瞄的檔案的最新hash值和原來baseline表中的檔案的雜湊值是否有改變,使用的**如下:
當上面這段**執行完畢後,$diffs陣列或者是空的或者會包含改變了的檔案(刪除,修改,增加)和它們的雜湊值。
然後我們可以將結果通過email傳送給使用者了。**如下:
並且要更新baseline表和tested表的資料,**如下:
最後,為了能讓系統定時地執行這個php檔案,可以充分利用unix中的cron任務計畫,因此可以編寫cron的檔案如下:
springtask 基本使用和 cron 表示式
spring 容器依賴 org.springframework spring context 5.0.5.release 開啟任務註解驅動。即掃瞄的時候掃瞄 springtask 相關的註解。為了使用 springtask 需要準備 spring 容器和定時任務。通過 main 方法建立 sprin...
PHP抓取網頁和分析
thursday,29.june 2006,06 41 03 php程式設計 譯者 limodou 抓取和分析乙個檔案是非常簡單的事。這個教程將通過乙個例子帶領你一步一步地去實現它。讓我們開 始吧!首先,我首必須決定我們將抓取的url位址。可以通過在指令碼中設定或通過 query string傳遞。...
如何預防和檢測網頁掛馬?
在 優化設計當中,檢測網頁木馬也是很重要的一項工作,目前流行的 被黑,是在相應的asp,htm,js等檔案中,插入以js呼叫方式的。本文主要介紹網頁掛馬的種類 如何檢測網頁是否被掛馬 如何清除網頁木馬。如何防止網頁被掛馬。1 網頁掛馬的種類.2 如何檢測網頁是否被掛馬。1 專業檢測工具,六款免費網頁...