自己對csrf和xss的一些簡單理解

       雖然自己沒有遇到過csrf和xss這兩種安全問題,項目中也基本上不會考慮到這些,可能是項目裏面涉及安全信息的東西基本較少吧。最近是閒着沒事看看一些題目,纔想起來把這兩個給稍微理解下,不過沒有遇到過,也只是屬於知道有這回事。

CSRF

       CSRF (Cross-site request forgery) 意思就是跨站請求僞造;舉個大家都用例子,用戶在當前信任且已保存登錄的銀行頁面(xyzbank),後又打開黑客僞造一個相似的頁面幷包含有有一段不安全的代碼,然後有一個誘人的標題連接:

<a href='http://www.xyzbank.com/pay?transferto=hacker&amount=9999' target="_blank">男人看了都把持不住視頻...</a>

一些好奇心重的人就會點擊進去看看,結果就一不小心就向黑客轉了9999錢了。

       這是怎麼回事呢?首先,用戶在信任的網站上登錄保存了信息,然後在惡意網站上點擊了惡意鏈接,由於是請求發往xyzbank的,瀏覽器會默認攜帶xyzbank的cookie,且具有很強的誘惑力引誘用戶前往點擊,最後部分用戶忍不住誘惑,嘗試點擊了該惡意按鈕。

       我們在當前頁面保存了我們自己賬戶的登錄信息,那麼就會生成相對應的cookie之類的用戶認證信息,保存在當前瀏覽器中。用戶點擊了剛剛惡意標題按鈕,就會向服務器發送一個包含有相對應轉賬信息的請求,服務器一看到cookie這個認證信息跟服務器保存的信息一致,則會向請求中的目標轉去對應的金額。

       上面這種的是GET方式的CSRF,那麼肯定會有POST的CSRF,一般POST的則是使用form表單:

<form action="http://www.xyzbank.com/pay" method="post">
    <input type="text" name="transferto" hidden value='hacker' />
    <input type="text" name="amount" hidden value='9999' />
</form>
<script>
    document.querySelector('form').submit()
</script>

這種POST類型的攻擊頁面一旦打開,就立即執行,無聲無息,用戶感覺不到它的存在。

      這兩種csrf跨站攻擊如果要防禦起來其實也很簡單:1,增加驗證碼;2,二次密碼認證;3,頁面隨機token

XSS

       XSS, 即爲(Cross Site Scripting), 中文名爲跨站腳本攻擊。

       它有幾種常見的攻擊方式:1.反射型xss,它通過引誘用戶點擊惡意連接,然後把返回的內容嵌入到頁面中,執行相對應的邏輯 ;2.持久型xss,也就是將惡意的代碼提交到了服務器,用戶每次打開該頁面就會執行相對應的惡意代碼;

       預防方法,可以使用xss過濾器,過濾掉無用數據,保留有效數據,而且在輸出到頁面的時候,需要對字符轉義,防止惡意代碼直接執行。然後是使用Http-only,防止腳本讀取cookie。

       xss攻擊我目前還是不是很理解,只是知道大概這幾種方式,和大致預防方法,總覺得這種會發生在由後端渲染輸出的頁面,如果純粹由前端渲染的頁面的話,比較少會發生這種事情。

       

       

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