Web安全基礎

安全簡史

Web1.0 服務端動態腳本的安全問題,好比將一個可執行腳本上傳到服務器上,從而得到權限。
Web2.0 Web攻擊思路從服務器端轉向客戶端,轉向了瀏覽器和用戶,例如XSS、CSRF攻擊html

瀏覽器安全

瀏覽器是互聯網的重要入口,在安全攻防中,瀏覽器的做用不可忽視前端

同源策略

同源策略是一種約定,它是瀏覽器最核心也是最基礎的安全功能。
同源指的是指URL的協議、域名、端口相同
舉個例子:當前URLhttp://www.example.com/index.htmlshell

URL 結果
http://www.example.com/detail/page.html 同源
https://www.example.com/detail/page.html 不一樣源,協議不一樣
https://en.example.com/detail/page.html 不一樣源,域名不一樣
https://www.example.com:8080/detail/page.html 不一樣源,端口不一樣

同源具體能夠體如今兩個方面:跨域

  • DOM同源策略:禁止對不一樣源的頁面DOM進行操做
  • XmlHttpRequest同源策略:禁止使用XHR對象向不一樣源的服務器地址發起HTTP請求。

同源策略會致使跨域問題,下面列出幾種解決方法瀏覽器

  • CORS Access-Control-Allow-Origin
  • JSONP 經過動態建立script標籤,而後利用src屬性進行跨域
  • 服務器代理
  • document.domain來跨子域
  • postMessage。

瀏覽器沙箱

現代瀏覽器採用多進程架構。 如Chrome的主要進程分爲:瀏覽器進程、渲染進程、插件進程、擴展進程。 安全

圖片1.png
渲染引擎由Sandbox隔離,網頁內容要與瀏覽器內核進程通訊要過IPCchannel,在其中進行安全檢查

惡意網站攔截

原理:通常都是瀏覽器週期性地從服務器端獲取一份最新的惡意網址黑名單,若是用戶上網時訪問的網址存在此黑名單中,瀏覽器就會彈出一個警告頁面。服務器

惡意網址只要有兩類:cookie

  • 掛馬網站,網站由惡意代碼經過瀏覽器漏洞執行shellcode,植入木馬
  • 釣魚網站,模仿知名網站欺騙用戶

常見的攻擊方式

跨站腳本攻擊XSS

惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。antd

XSS產生的緣由:過於信任客戶端提交的數據架構

XSS的分類:

  • 反射型
    把用戶的輸入「反射」到瀏覽器上,一般攻擊者須要誘使用戶點擊一個惡意連接,才能攻擊成功。
  • 存儲型
    把用戶輸入的數據「存儲在服務器端」,常見情景就是攻擊者發表了一篇含有惡意代碼的博客,當其餘人瀏覽時,惡意代碼就會被執行。
  • DOM Based
    這個類型並非以數據是否有存儲到服務來分類,由於此類攻擊造成緣由比較特殊,是修改頁面的DOM節點造成XSS,因此會把它單獨列爲一個分類

例子1
正常發送消息:http://www.test.com/message.html?send=Hello,World!接收者將會接收信息並顯示Hello,Word
非正常發送消息: http://www.test.com/message.html?send=<script>alert(‘foolish!’)</script>!接收者接收消息顯示的時候將會彈出警告窗口,攻擊者也就是誘使他人點擊此連接來發起進攻

例子2
頁面後臺有個能修改用戶提交的input元素<input type="text" value="">
正常狀況:用戶輸入123,後臺標籤<input type="text" value="123"/>
非正常狀況: 用戶輸入" onclick="alert(1),後臺標籤<input type="text" value="" onclick="alert(1)" />當管理者點擊標籤是就會彈出警告窗口

XSS危害:

  • 竊取用戶cookies資料,從而獲取用戶隱私信息
  • 劫持用戶瀏覽器會話,從而執行任意操做,例如進行非法轉帳、強制發表日誌、發送電子郵件等

XSS防護:

  • 對輸入輸出進行過濾,內容編碼
  • HttpOnly 禁止js操做cookie

跨站點請求僞造CSRF

攻擊者盜用了你的身份,以你的名義發送惡意請求,對服務器來講這個請求是徹底合法的,可是卻完成了攻擊者所指望的一個操做。

CSRF 產生緣由:重要請求操做的參數都是能夠被攻擊者猜想到的,攻擊者繞過同源策略限制將僞造請求發送出去,而相關的身份信息在cookie中也隨之發送。

例子1 銀行轉帳
一、用戶登陸某銀行網站,銀行轉帳請求url爲 http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory
二、此時用戶訪問惡意網站
三、惡意網址中有 <img src="http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory "/> 使用img標籤繞過了同源策略向銀行服務器發起請求,cookie中身份信息也隨請求發送出去,完成了攻擊。

CSRF防護

  • Referer Check 檢查請求中的referer頭,若是不是合法網站發起請求就拒絕服務。可是不足之處是服務器並不是何時都能獲取到Referer。
  • Anti CSRF Token 在請求的url或者請求頭中加入Token,攻擊者在不知道Token的狀況下就沒法攻擊成功

點擊劫持ClickJacking

原理:利用了視覺欺騙

攻擊方式:

  • 攻擊者使用一個透明的iframe,覆蓋在一個網頁上,而後誘使用戶在該頁面上進行操做,此時用戶將在不知情的狀況下操做的都是透明的iframe頁面,而不是顯示的頁面

  • 攻擊者使用一張圖片覆蓋在網頁,遮擋網頁原有位置的含義

一個簡單的例子 例子中用iframe加載了antd-design頁面,而後用一個a標籤蓋住了頁面的logo,點擊logo時就會跳到a標籤指向的頁面

防護:

X-FRAME-OPTIONS是微軟提出的一個http頭,專門用來防護利用iframe嵌套的點擊劫持攻擊。

  • DENY  // 拒絕任何域加載
  • SAMEORIGIN  // 容許同源域下加載
  • ALLOW-FROM // 能夠定義容許frame加載的頁面地址

參考材料:

相關文章
相關標籤/搜索