天天看點

web用戶端安全之跨站點請求僞造攻擊

CSRF攻擊,Cross-site request forgery,跨站點請求僞造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。指攻擊者通過跨站請求,以合法的使用者的身份進行非法操作。

一、CSRF攻擊的原理

攻擊者盜用你的身份,以你的名義發郵件,發短信,進行交易轉賬,向第三方網站發送惡意請求,容易造成個人隐私洩露以及财産安全。

二、CSRF攻擊的防禦

1、采用安全架構,例如Spring Security。

2、引入token機制。在HTTP請求中進行token驗證,如果請求中沒有token或者token内容不正确,則認為CSRF攻擊而拒絕該請求。

CSRF攻擊成功的條件在于攻擊者能夠準确地預測所有的參數進而構造出合法的請求,于是我們可以保持原有參數不變,添加一個參數Token随機值。這樣,攻擊者因為不知道Token而無法構造出合法的請求進行攻擊,是以我們在構造請求時隻需保證:

Token具有随機性,使攻擊者無法準确預測;

Token具有一次性,即每次請求成功後要更新Token,增加預測難度;

Token具有保密性,敏感操作使用POST,防止Token出現在URL中;

過濾使用者輸入的内容不能阻擋CSRF攻擊,我們需要做的是過濾請求的來源,因為有些請求是合法的,有些是非法的,是以CSRF防禦主要是過濾那些非法僞造的請求來源。

3、驗證碼。通常情況下,驗證碼能夠很好的遏制CSRF攻擊,然而,考慮到使用者體驗,驗證碼隻能作為一種輔助手段,而不是最主要的解決方案。

4、referer識别。在HTTP Header中有一個字段referer,它記錄了HTTP請求的來源位址。如果referer是其他網站,就有可能是CSRF攻擊,則拒絕該請求。但是,伺服器并非都能取到referer。很多使用者出于隐私保護的考慮,限制了referer的發送。在某些情況下,浏覽器也不會發送referer,例如從HTTPS跳轉到HTTP。referer Check隻能用于監控CSRF攻擊的發生,而不用來抵禦攻擊。

部落格簽名:敬畏生命,珍惜時間,熱愛生活。

繼續閱讀