WEB安全知多少

mistletoe?發表於2019-04-22

第一章 客戶端安全

2.1 同源策略

限制不同的document指令碼對當前的document讀取或者設定某些屬性

埠,協議或者域名之一有一個不一樣就會產生跨域問題

2.2 瀏覽器沙箱

瀏覽器利用沙箱技術,可以讓不受網頁信任的程式碼,JavaScript程式碼執行在一個收到限制的環境中,從而保護本地的桌面系統安全。

瀏覽器的多程式架構,將瀏覽器的各個功能分開,當一個程式崩潰時,也不會影響到其他的程式。谷歌是第一個引入瀏覽器多程式架構的瀏覽器,主要分為瀏覽器程式、渲染程式、外掛程式以及擴充套件程式。

2.3 惡意網址攔截

原理:瀏覽器週期性地從伺服器獲取一份最新的惡意網址名單。

惡意網站: ①掛馬網站:利用瀏覽器的漏洞執行惡意JavaScript程式碼 ②釣魚網站:模仿知名網站來欺騙使用者

攔截:谷歌黑名單庫,EVSSL證照


第二章 跨站指令碼攻擊

3.1 XSS簡介

指的是黑客用過HTML注入篡改網站,插入了惡意指令碼,從而在使用者瀏覽時控制使用者的許可權。

型別: 1、反射型XSS:簡單地把使用者輸入的資料“反射”給使用者,往往誘使使用者點選才會成功。也成為非永續性XSS攻擊 2、儲存型XSS:把使用者的資料儲存在服務端。也稱為永續性XSS。比如黑客發表一篇含有惡意程式碼的文章,使用者閱讀後把惡意指令碼儲存在服務端。 3、DOM Based XSS:並非按照資料是否儲存在服務端劃分的,效果上來說是反射型的XSS。單獨劃分來說,比如構造一個事件,閉合原始碼的’且插入自己的JavaScript程式碼。第二個就是會閉合掉a然後使得觸發另外的函式。

3.2 XSS攻擊進階

  • XSS Playload:攻擊者攻擊成功之後就會執行它的惡意程式碼,XSS Playload就是JavaScript程式碼。比如他會讀取你的瀏覽器cookie物件,這也稱為cookie劫持。可以通過HttpOnly標識防止cookie劫持

  • 構造GET請求和POST請求可能導致使用者刪除重要資料和文章。還可以利用這個來獲取使用者的賬戶密碼等資訊。

  • 非法獲取使用者的IP地址。因為很多時候使用者的電腦都是使用了代理伺服器,網站看到的IP地址其實是內網的出口IP地址。

3.3 XSS防禦

  • HttpOnly:主要是為了解決XSS攻擊後的cookie劫持攻擊。

step1 :瀏覽器向伺服器傳送請求,這時候是沒有cookie的 step2 :伺服器返回set-Cookie頭,向客戶端瀏覽器寫入Cookie step3 :在該Cookie到期之前,瀏覽器訪問該域下的所有頁面都應該傳送Cookie

  • 處理富文字:在標籤選擇上儘量選擇白名單,避免使用黑名單

第四章 跨站請求偽造

攻擊者在自己的域內偽造一個頁面,比如刪除某個部落格的文章。然後誘使使用者訪問一個頁面,就以該使用者身份在第三方站點執行一次操作。 ####CSRF防禦

  • 驗證碼:CSRF攻擊通常是使用者在不知情的情況之下構造了網路請求,而驗證碼是使用者必須與應用進行互動才能完成最終請求。
  • Referer Check :用於檢查請求是否來自於合法的"源"。比如使用者需要發帖就會登陸到後臺,那麼Referer這個值必然是發帖表單所在的頁面。但是有一個缺陷,伺服器並非什麼時候都會去得到Referer。
  • Token:Token 需要同時放在表單中和session中,提交表但時,伺服器要驗證表單中的Token是否與使用者session或者(cookie)中的Token是否一致。
  • token一定要足夠隨機

第五章 點選劫持

5.1 點選劫持

點選劫持其實就是利用視覺上的欺騙手段。攻擊者使用一個不透明、不可見的iframe覆蓋在網頁上,

5.2 拖拽劫持和資料竊取

誘使使用者從不可見的iframe中拖拽出攻擊者希望得到的資料。

5.3 觸屏劫持

  • touchstart
  • touchend
  • touchmove
  • touchcancel

5.4 防禦ClickJacking

  • frame busting 寫一段JavaScript程式碼防止iframe巢狀

  • X-Frame-Options 使用一個HTTP請求頭,當值位DENY時瀏覽器拒絕載入當前頁面任何frame頁面;若值為sameorigin時允許載入同源頁面下的頁面;當值為allow-from origin時就允許載入頁面的地址


第六章 HTML5安全

6.1 HTML5新標籤

使用HTML5新增的標籤,比如說video等用於遠端載入資源的標籤會存在XSS漏洞。

  • iframe的sandbox 為了限制iframe的指令碼,為iframe定義了一個sandbox屬性,將iframe所載入的內容視為一個獨立的"源",其中的指令碼被限制執行,表單被限制提交,外掛被禁止載入。
  • postMessage----跨視窗傳遞資訊 允許每一個window物件往其他的擦視窗傳送文字資訊,從而實現跨視窗訊息傳遞,這個功能是不受同源策略限制。

第七章 注入攻擊

7.1 SQL隱碼攻擊

注入的本質就是把使用者輸入的資料當成程式碼執行。原來程式要執行的資料拼接了使用者輸入的資料。


第八章 認證與會話管理

  • 認證的目的就是為了認出使用者是誰,授權就是為了決定使用者能夠做什麼。
  • 認證實際上就是一個驗證憑證的過程。
  • 單點登陸,使用者登陸一次就可以訪問所有的系統。
  • OpenID是一個開放的單點登陸系統,用的是URI作為使用者在網際網路上面的標識,然後網站重定向到openID的提供者認證,認證完成後再重定向回網站。
  • web應用中,使用者登陸後,伺服器會返回一個sessionID加密寫在瀏覽器的cookie上。