web前後端漏洞分析與防禦(二)-CSRF

跨站請求僞造攻擊CSRF(Cross Site Request Forgy)

SRF跨站點請求僞造(Cross—Site Request Forgery),跟XSS攻擊一樣,存在巨大的危害性,你可以這樣來理解:
       攻擊者盜用了你的身份,以你的名義發送惡意請求,對服務器來說這個請求是完全合法的,但是卻完成了攻擊者所期望的一個操作,比如以你的名義發送郵件、發消息,盜取你的賬號,添加系統管理員,甚至於購買商品、虛擬貨幣轉賬等。 如下:其中Web A爲存在CSRF漏洞的網站,Web B爲攻擊者構建的惡意網站,User C爲Web A網站的合法用戶。

發送給http://localhost:1521/已登錄用戶,該用戶打開就會中招
iframe是防止頁面跳轉
<script>
            document.write(`
                <form name="commentForm" target="csrf" method="post" action="http://localhost:1521/post/addComment">
                    <input name="postId" type="hidden" value="1">
                    <textarea name="content">來自CSRF!</textarea>
                </form>`
            );

            var iframe = document.createElement('iframe');
            iframe.name = 'csrf';
            iframe.style.display = 'none';
            document.body.appendChild(iframe);

            setTimeout(function(){
                document.querySelector('[name=commentForm]').submit();
            },1000);
        </script>

CSRF攻擊原理

  CSRF攻擊攻擊原理及過程如下:

       1. 用戶C打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;

       2.在用戶信息通過驗證後,網站A產生Cookie信息並返回給瀏覽器,此時用戶登錄網站A成功,可以正常發送請求到網站A;

       3. 用戶未退出網站A之前,在同一瀏覽器中,打開一個TAB頁訪問網站B;

       4. 網站B接收到用戶請求後,返回一些攻擊性代碼,併發出一個請求要求訪問第三方站點A;

       5. 瀏覽器在接收到這些攻擊性代碼後,根據網站B的請求,在用戶不知情的情況下攜帶Cookie信息,向網站A發出請求。網站A並不知道該請求其實是由B發起的,所以會根據用戶C的Cookie信息以C的權限處理該請求,導致來自網站B的惡意代碼被執行。 

 

 

CSRF防禦

 

 

驗證碼

 

Token


多Token解決用戶打開多頁面但是Token被覆蓋的問題
http://www.cnblogs.com/bukudekong/p/3829875.html

 

驗證refer(referer)(禁止來自第三方網站的請求)

  • 沒refer,部分網站,其他方法,根據業務

 

 

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