天天看點

前端安全性問題

**

1、XSS攻擊(跨站腳本攻擊)

**

XSS(Cross Site Scripting)是常見的web攻擊技術之一。所謂的跨站腳本攻擊是指:惡意攻擊者往web頁面裡注入代碼,當使用者浏覽這些網頁時就會執行其中的惡意代碼,可以對使用者進行cookie資訊、會話劫持等各種攻擊。

解決方案:

(1)輸入過濾。永遠不要相信使用者的輸入,對使用者輸入的資料做一定的過濾。這樣可以初步對XSS漏洞進行防禦。這些措施隻是在web端做了限制,攻擊者通過抓包工具如Fiddler還是可以繞過前端輸入的限制,修改請求注入攻擊腳本。

是以,背景伺服器需要在接收到使用者資料以後,對特殊危險字元進行過濾或者轉義處理,然後再存儲到資料庫中。

(2)輸出編碼。伺服器端輸出到浏覽器端的資料可以使用系統的安全函數來進行編碼或者轉義來防範xss攻擊。比如js的編碼方式可以使用JavaScriptEncode。

(3)安全編碼。開發時候需要盡量避免Web用戶端文檔重寫、重定向或者其他敏感操作,同時需要避免使用用戶端資料,這些操作盡量在伺服器端使用動态頁面來實作。

(4)HTTPOnly Cookie。這是預防XSS攻擊竊取使用者cookie最有效的防禦手段。web應用程式在設定cookie時将其屬性設定為HttPOnly,可以避免該網頁的cookie被用戶端惡意JavaScript竊取進而保護使用者的cookie資訊。

(5)WAF(Web Application Firewall),web應用防火牆,主要功能是防範網頁木馬、XSS攻擊以及一些其他web漏洞攻擊,由第三方公司開發。

## **

2、CSRF攻擊(跨站請求僞造)

** ##

CSRF(Cross Site Request Forgery)即跨站請求僞造是一種常見的web攻擊。

攻擊原理:

a、使用者打開浏覽器,通路受信任網站A,輸入使用者名和密碼請求登入網站A;

b、在使用者資訊通過驗證之後,網站A産生Cookie資訊并傳回給浏覽器,此時使用者登入網站A成功,可以正常發送請求到網站A;

c、使用者未退出網站A之前,在同一浏覽器中打開一個TAb網頁通路網站B;

d、網站B在接收到使用者請求後傳回一些攻擊性代碼,并發出一個請求要求通路第三方站點A;

e、浏覽器在接收到這些攻擊性代碼後,根據網站B的請求,在使用者不知情的情況下攜帶Cookie資訊,向網站A送出請求。網站A并不知道該請求其實是由B發起的,是以會根據使用者的Cookie資訊以使用者的權限處理該請求,導緻來自網站B的惡意代碼被執行。

解決方案:

(1)驗證HTTP Referer字段。根據HTTP協定,在HTTP頭中有一個字段交Referer,它記錄了HTTP請求的來源位址。當浏覽器向web伺服器發送請求時,一般會帶上Referer資訊告訴伺服器這是從哪個頁面連結過來的,伺服器就可以得到一些資訊來檢查請求的來源來防禦CSRF攻擊。但是在某些情況下如從https跳轉到http,浏覽器處于安全考慮,不會發送referer,這樣伺服器就無法進行檢查了,是以驗證HTTP Referer字段并不能作為防禦CSRF攻擊的主要手段,但是可以用來監控CSRF攻擊的發生。

(2)在請求位址中添加token并驗證。發送請求時在HTTP請求中以參數的形式加入随機産生的一個token,并在伺服器端建立一個攔截器來驗證這個token。但是在處理多個頁面共存問題時,當某個頁面消耗掉token時,其他頁面的表單儲存的還是被消耗的那個token,當送出表單時就會發生token錯誤。

3、SQL注入攻擊

SQL注入(SQL Injection),應用程式在向背景資料庫傳遞SQL時,攻擊者将SQL指令插入到Web表單送出或輸入域名或頁面請求的查詢字元串,達到欺騙伺服器執行惡意的SQL指令。

解決方案:

(1)防止系統敏感資訊洩露。

(2)資料轉義。

(3)增加黑白名單驗證。

4、檔案上傳漏洞

該漏洞允許使用者上傳任意檔案可能會讓攻擊者注入危險内容或惡意代碼,并在伺服器上運作。

原理:由于檔案上傳功能實作代碼沒有嚴格限制使用者上傳的檔案字尾以及檔案類型,導緻允許攻擊者向某個可通過web通路的目錄上傳任意PHP檔案,并能夠将這些檔案傳遞給PHP解釋器,就可以在遠端伺服器上執行任意PHP腳本。

解決方案:

(1)檢查伺服器是否判斷檔案上傳類型和字尾。

(2)定義上傳檔案類型的白名單,也就是隻允許白名單裡面類型的檔案上傳。

(3)檔案上傳目錄禁止執行腳本解析,避免攻擊者進行二次攻擊。