天天看點

web攻擊和防禦措施

1、SQL注入:參照下面的連結

http://www.cnblogs.com/chenhaoyu/p/8758888.html
      

2、跨網站腳本攻擊(Cross Site Scripting, XSS)

  攻擊者将惡意代碼注入到網頁上,其他使用者在加載網頁時就會執行代碼,攻擊者可能得到包括但不限于更高的權限(如執行一些操作)、私密網頁内容、會話和cookie等各種内容。這些惡意代碼通常是JavaScript、HTML以及其他用戶端腳本語言。

如果傳入一段腳本<script>[code]</script>,那麼腳本也會執行。

防範方法:
    1、使用htmlspecialchars函數将特殊字元轉換成HTML編碼,過濾輸出的變量
    2、如果想更徹底的過濾,使用HTMLPurifire插件過濾,專門用來防止xss攻擊的插件
      

3、跨網站請求僞造攻擊(Cross Site Request Forgeries, CSRF)

  攻擊者僞造目标使用者的HTTP請求,然後此請求發送到有CSRF漏洞的網站,網站執行此請求後,引發跨站請求僞造攻擊。攻擊者利用隐蔽的HTTP連接配接,讓目标使用者在不注意的情況下單擊這個連結,由于是使用者自己點選的,而他又是合法使用者擁有合法權限,是以目标使用者能夠在網站内執行特定的HTTP連結,進而達到攻擊者的目的。

與xss的不同點:

它與XSS的攻擊方法不同,XSS利用漏洞影響站點内的使用者,攻擊目标是同一站點内的使用者者,而CSRF 通過僞裝成受害使用者發送惡意請求來影響Web系統中受害使用者的利益。
      

簡單說下原理:首先有一個站點A,使用者通路了其中一個頁面,URL為/sdad/asd?uid=1&username=ww,又通路了一個站點B的其中一個頁面,而這個頁面中有一個img标簽,如

<img src="/sdad/asd?uid=1&username=bbbb">,如果A站點的那個頁面是修改使用者名操作,那麼當使用者通路站點B的這個頁面時,就觸發了CSRF攻擊,就把使用者名ww改為了bbbb,進而實作了CSRF攻擊
防禦措施一:判斷請求頭的來源
      
// 檢查上一頁面是否為目前站點下的頁面
 3 if (!empty($_SERVER['HTTP_REFERER'])) {
 4     if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) != 'html5.yang.com') {
 5         // 可以設定http錯誤碼或者指向一個無害的url位址
 6         //header('HTTP/1.1 404 not found');
 7         //header('HTTP/1.1 403 forbiden');
 8         header('Location: http://html5.yang.com/favicon.ico');
 9         // 這裡需要注意一定要exit(), 否則腳本會接着執行
10         exit();
11     }
12  }      

防禦措施二:在頁面生成一個随即串并儲存在token中,用于在伺服器中比對,參照laravel中的CSRF防禦機制

4、Session劫持攻擊(Session Hijacking)

攻擊者利用各種手段來擷取目标使用者的session id。一旦擷取到session id,那麼攻擊者可以利用目标使用者的身份來登入網站,擷取目标使用者的操作權限。

防禦方法:

1、 更改Session名稱。PHP中Session的預設名稱是PHPSESSID,此變量會儲存在Cookie中,如果攻擊者不分析站點,就不能猜到Session名稱,阻擋部分攻擊。

2、 關閉透明化Session ID。透明化Session ID指當浏覽器中的Http請求沒有使用Cookie來存放Session ID時,Session ID則使用URL來傳遞。

3、 設定HttpOnly。通過設定Cookie的HttpOnly為true,可以防止用戶端腳本通路這個Cookie,進而有效的防止XSS攻擊。

4、 關閉所有phpinfo類dump request資訊的頁面。

5、驗證HTTP頭部資訊

6、每當使用者登陸的時候就進行重置sessionID

7、sessionID閑置過久時,進行重置sessionID
      

5、檔案上傳漏洞攻擊(File Upload Attack)

攻擊者利用程式缺陷繞過系統對檔案的驗證與處理政策将惡意代碼上傳到伺服器并獲得執行伺服器端指令的能力。

常用的攻擊手段有:

上傳Web腳本代碼,Web容器解釋執行上傳的惡意腳本;
上傳Flash跨域政策檔案crossdomain.xml,修改通路權限(其他政策檔案利用方式類似);
上傳病毒、木馬檔案,誘騙使用者和管理者下載下傳執行;
上傳包含腳本的圖檔,某些浏覽器的低級版本會執行該腳本,用于釣魚和欺詐。
總的來說,利用的上傳檔案要麼具備可執行能力(惡意代碼),要麼具備影響伺服器行為的能力(配置檔案)。
      

 防範措施:

1.檔案上傳的目錄設定為不可執行;
2.判斷檔案類型,設定白名單。對于圖檔的處理,可以使用壓縮函數或者resize函數,在處理圖檔的同時破壞圖檔中可能包含的HTML代碼;
3.使用随機數改寫檔案名和檔案路徑:一個是上傳後無法通路;再來就是像shell、.php 、.rar和crossdomain.xml這種檔案,都将因為重命名而無法攻擊;
4.單獨設定檔案伺服器的域名:由于浏覽器同源政策的關系,一系列用戶端攻擊将失效,比如上傳crossdomain.xml、上傳包含Javascript的XSS利用等問題将得到解決。