web網絡安全

今天主要複習了一些比較常見的網絡徹底的問題javascript

  1. XSS攻擊html


他主要的作法就是在頁面上執行一段javascript,獲取網站的信息,如cookie,他主要分幾個類型:java

  • 反射型,如在img中的url是一段帶<script>的代碼;他主要是設計一個url來獲取客戶信息web

  • 保存型:
    這種是腳本保存在數據庫中,不通過濾就存儲並顯示給用戶。實現這個過程主要分兩步,先將惡意代碼數據提交給服務器;而後服務器再將惡意代碼返回給客戶端,執行惡意代碼;ajax

  • 基於DOM型:數據庫

    攻擊的過程能夠用以下圖來表示:
    圖片描述json

    怎麼防護:校驗用戶輸入和校驗Id類型,正則匹配; 在頁面輸出以前先進行轉義,html編碼,javascript編碼;url編碼; cspcanvas

    有可能會出現攻擊的幾個點:跨域

  • &號不該該出如今HTML的大部分節點中瀏覽器

  • 括號<>是不該該出如今標籤內的,除非是引號引入

  • 在ext節點裏面,<左尖括號有很大的危害

  • 引號在標籤內可能有危害,具體危害取決於存在的位置,可是在text節點是沒有危害的。

CSRF

  1. CSRF(Cross-site Request forgery)跨站請求僞造,他主要作的是,攻擊者盜用你的登陸信息,以你的身份模擬發送各類請求。

    CSRF的攻擊圖:
    圖片描述

從圖中能夠看出,要完成一次CSRF攻擊,受害者必須完成兩個步驟

  • 登陸受信任網站A,並在本地生成cookie

  • 在不退出A的狀況下,訪問危險網站B。

須要知足這兩個條件,纔會收到CSRF的攻擊,由於你不能保證如下狀況不會發生

  • 你登陸了一個網站後,再也不打開一個tab頁面並訪問另外的網站,特別是如今瀏覽器都是支持多tab的。

  • 關閉本地的瀏覽器後,本地的Cookie不會馬上過時

  • 上圖中的攻擊網站,可能存在一個存在其餘漏洞的可信任的常常被人訪問的網站

如何預防CRSF:

服務端預防: 正確使用GET、POST和Cookie; 在非GET請求中增長僞隨機數;

隨機數的增長主要有三個方式:
 - 爲每一個用戶生成一個惟一的cookie token,全部表單都包含同一個僞隨機值
 - 每一個請求都是用驗證碼,這個方案完美,由於要屢次輸入驗證碼,因此用戶友好性不好,因此不適合實際運用
 - 不一樣的表單包含一個不一樣的僞隨機值

3.HTTP劫持:主要是運營商,預防的方法是https

4.DNS劫持

HTML5的技術對網絡安全的幫助

  • XMLHttpRequest Level 2 (Cross-origin Resource Sharing)
    阮一峯的博格

  • 本地存儲: 增長了local storage 和 session storage,使存儲信息從cookie中走出來

  • web worker(js多線程執行): 由於執行js會阻塞UI,h5實現了web worker這一機制,從而使得js可使用子線程去執行任務,不阻塞UI線程

  • web secket(服務器推送機制)主要是爲了保持長連接

  • 新標籤和新API,好比<video>,<audio>,<canvas>使得能夠少用第三方插件,減小不可控安全問題
    (加強cookie的安全分方法: session cookie設置爲true,建立cookie會被安全的形式向服務器傳輸,也就是在HTTPS鏈接中被瀏覽器傳遞到服務器端進行會話驗證,若是是HTTP鏈接就不會傳遞信息,因此不會被竊取到Cookie的具體內容; HttpOnly屬性,若是設置了HttpOnly屬性,那麼經過腳本將沒法獲取到Cookie信息,這樣能有效的防止XSS攻擊)

AJAX 跨域資源共享(CORS)

由於ajax是嚴格遵照同源策略的,因此誕生了ajax跨域方式的-CORS,就是爲了解決跨域問題;除了這種方法之外,還有兩種其餘方式:jsonp的方式和flash跨域方案

CORS跨域的作法:用Access-Control-Allow-Origin這個頭以及其餘的頭來實現的,客戶端跨域訪問另外一個服務器,服務器會肯定這個域名是否有權限來獲取資源,如有則返回一個帶有Access-Control-Allow-Origin頭的response以及資源,若無則返回一個權限錯誤:XMLHttpRequest;

可是這個作法的風險點

http頭信息能夠僞造,說明頭信息中的域名origin能夠是假的,因此跨域是要配合身份驗證進行的,因此跨域要帶上session id;
就算帶上了session id,但第三方仍是可能會入侵,致使源站信息泄露,因此CORS是個很是危險的東西;
內部信息泄露,內部成員打開了一個evil website, 致使信息泄露,內部網站的數據也將泄露;
設置了Access-Control-Allow-Origin,並對請求點作了請求控制,可是返回權限錯誤的時候,請求信息已經到了客戶端;
CORS默認不攜帶會話信息,可是若是withCredentials設置爲true,就能夠攜帶,因此最好不要設置爲false.萬一設置爲true,請在Access-Control-Allow-Origin上設置具體的域名,不要使用*。

防護姿式:

不要對Access-Control-Allow-Origin設置*
對跨域要驗證session信息
嚴格審查請求信息,好比請求蠶食,還有http頭信息

因此應該怎麼使用:

圖片描述

相關文章
相關標籤/搜索