CSRF和XSS網絡攻擊及防範

CSRF:
Cross Site Request Forgery,跨站請求僞造。字面理解就是在別的站點僞造了一個請求。專業術語就是在受害者訪問一個網站時,其cookie還沒有過期的情況下,攻擊者僞造一個鏈接地址發送受害者並欺騙讓其點擊,從而形成CSRF攻擊。可以理解爲攻擊者盜用了用戶的身份,以用戶的名義發送了惡意請求。
比如用戶登錄了一個網站後,立刻在另外一個tab頁面訪問。攻擊者用來製造攻擊的網站,這個網站要求訪問剛剛登錄的網站,並且發送了一個惡意請求,這時候CSRF就產生了。
比如這個製造攻擊的網站使用一張圖片,但是這種圖片的連接卻是可以修改數據庫的,這時候攻擊者就可以以用戶的名義,操作這個數據庫。
防禦:
使用驗證碼;
在HTTP頭中自定義屬性並驗證;
檢查HTTPS頭部的refer(驗證http Referer字段);
在請求地址中添加token並驗證。

XSS:
Cross Site Scripting,跨站腳本攻擊,是發生在目標用戶的瀏覽器層面上的。當渲染DOM樹的工程發生了不在預期內執行的JS代碼時,就發生了XSS攻擊。大部分XSS攻擊的主要方式是嵌入一段遠程或者第三方域上的JS代碼,實際上是在目標網站的作用域下執行這段JS代碼。
攻擊者通過注入惡意的腳本,在用戶瀏覽網頁的時候進行攻擊,比如獲取cookie,或者其他用戶身份信息,可以分爲存儲型和反射型。存儲型是攻擊者輸入一些數據並且存儲到了數據庫中,其他瀏覽者看到的時候進行攻擊;反射型的話不存儲在數據庫中,往往表現爲將攻擊代碼放在url地址的請求參數中。
防禦的思路:對輸入(和URL參數)進行過濾,對輸出進行編碼。也就是對提交的所有內容進行過濾,對url中的參數進行過濾,過濾掉會導致腳本執行的相關內容;然後對動態輸出到頁面的內容進行html編碼,使腳本無法在瀏覽器中執行。雖然對輸入過濾可以被繞過,但是也還是會攔截很大一部分的XSS攻擊
防禦的方法:
爲cookie設置httponly屬性;
對用戶的輸入進行檢查(對URL參數進行過濾);
進行特殊字符過濾。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章