xss攻擊和csrf攻擊

XSS攻擊

參考文章
中文全稱:跨站腳本攻擊;
英文全稱:Cross Site Scripting;
是web程序中最常見的漏洞,指的是攻擊者在網頁中插入客戶端腳本(如:javascript),當用戶在瀏覽該網頁時,該腳本就會在用戶的瀏覽器上運行,從而達到攻擊者的目的,如:竊取用戶cookie的信息。

xss攻擊實現的方式

在網頁中能進行輸入的地方(如:輸入框),輸入一段腳本語言,如:javascript,由於html是超文本標記語言,可以直接進行拼接,所以將輸入的內容沒有當成內容處理而當成了代碼處理,xss攻擊的威力取決於輸入的腳本。

xss攻擊的場景

1.Dom-Based Xss漏洞
發送匿名郵件,其中包含一個惡意的url,當用戶點擊該url時,其中的惡意代碼就會在用戶的瀏覽器中運行,竊取用戶cookie中的信息。
2.Stored Xss(存儲式xss漏洞)
該類型的漏洞影響廣泛且有可能會影響web服務器自身。該種漏洞使得web服務器允許攻擊代碼存儲在服務器中。如:攻擊者將含有惡意代碼的文章發送到服務器,以後訪問該文章的用戶都會受到xss攻擊。

Dom-Based XSS漏洞威脅用戶個體,而存儲式XSS漏洞所威脅的對象將是大量的用戶

xss的解決辦法

解決辦法的宗旨是:不相信用戶的輸入
1.將重要信息的cookie設爲http only,這樣用戶端就不能用js來訪問cookie了。
2,.在前端對用戶的輸入進行判斷,可以利用正則表達式或者對輸入框的type屬性進行設置,如:輸入手機號的輸入框的type設爲 type=“tel”
3.對用戶的輸入進行編碼,將用戶輸入的有特殊意義的字符進行進行Html Encode 處理。
4.過濾或移除特殊的html標籤。
5.過濾javascript的事件標籤。

CSRF/XSRF攻擊

參考文章
個人覺得參考文章寫得很好,下面的評論跟神仙打架一樣,受益匪淺。
中文全稱:跨站請求僞造
英文全稱:Cross Site Request Forgery
CSRF攻擊簡而言之,就是惡意網站冒充合法用戶的身份,向目標網站發送請求。

CSRF攻擊原理

1.首先用戶A要登錄某安全網站B(即目標網站)。
2.網站B的cookie保存在用戶A的瀏覽器中,以便保持登錄態。
3.A在沒有退出B網站或者說在B網站的cookie沒有過期的情況下訪問了危險網站C.。
4.危險網站C向B發送請求,但因爲是通過A的瀏覽器發送的,會攜帶A相應的cookie信息,所以會通過B網站的驗證。

就我個人粗淺的理解來說,CSRF攻擊就相當於是一種易容,只不過是頂着和合法用戶一樣的“臉”,所以如果要杜絕該種攻擊,比較有效的辦法應該是規定一些只有合法用戶和安全網站能知道的東西,比如參考文章中提到的驗證圖,或者現在APP中比較常用的驗證碼。單純就CSRF攻擊而言,雖然他能頂着用戶的cookie發請求,但是他並不知道cookie的內容。

CSRF攻擊防範

參考文章

方法一、Token 驗證:(用的最多)
(1)服務器發送給客戶端一個token;
(2)客戶端提交的表單中帶着這個token。
(3)如果這個 token 不合法,那麼服務器拒絕這個請求。
方法二:隱藏令牌:
把 token 隱藏在 http 的 head頭中。
方法三、Referer 驗證:
Referer 指的是頁面請求來源。意思是,只接受本站的請求,服務器才做響應;如果不是,就攔截。

總結

個人觀點,我覺得XSS攻擊的威脅程度比CSRF攻擊大,XSS攻擊如果能成功就可以獲取到用戶已經登錄或者並未過期的cookie,CSRF攻擊的實施條件比XSS攻擊苛刻,而且只能是在發送請求的時候利用瀏覽器自動添加cookie的功能實施僞造,並不知道cookie的內容。如果不對的話,歡迎大佬們指正。

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