1. 程式人生 > >《web應用安全》學習筆記(二) 被動攻擊與同源策略

《web應用安全》學習筆記(二) 被動攻擊與同源策略

被動攻擊與同源策略

瀏覽器針對被動攻擊的防禦策略--沙盒(沙盒的核心概念為同源策略)

主動攻擊

指攻擊者直接攻擊web伺服器,如SQL注入

被動攻擊

單純的被動攻擊攻擊者針對網站的使用者設下陷阱,利用掉入陷阱的使用者來攻擊應用程式

惡意利用網站進行的被動攻擊

利用正規網站進行的被動攻擊,入侵正規網站,往其內容中嵌入惡意程式碼,
使用者在瀏覽了含有惡意程式碼的內容後,就會感染病毒。

在正規網站中設定陷阱的手法通常有:

  1. 非法獲取FTP等伺服器的密碼後篡改網站內容。
  2. 通過攻擊web伺服器的安全隱患來篡改網站內容。
  3. 通過SQL注入攻擊來篡改網站內容。
  4. 通過使用者能夠自己釋出內容的網站,利用跨站指令碼漏洞實施攻擊。

跨站的被動攻擊

具體流程:

  1. 使用者瀏覽惡意網站
  2. 從惡意網站下載含有惡意程式碼的HTML。
  3. HTML中的惡意程式碼被觸發,從而向正規網站傳送攻擊請求(CSRF)
  4. 正規網站返回含有javascript的響應內容(XSS,HTTP訊息頭注入攻擊)

瀏覽器如何防禦被動攻擊

網站方面的對策的前提是,瀏覽器不存在安全問題

沙盒

是JavaScript,JavaApplet,Adobe Flash Player經常用的一種思路
在沙盒裡面程式許可權受到制約即使編寫惡意程式也無法對使用者造成傷害。

為了防止惡意程式在使用者瀏覽器上執行,javascript等語言提供了一些安全性的機能,基本思想:

  1. 只有在使用者確認了程式的發行方並且允許執行的情況才,程式才能被執行。(經常被用於ActiveX或者帶有簽名的Applet,現在這種方式主要用於為瀏覽器提供外掛功能)
  2. 提供限制程式許可權的沙盒環境。 通常情況下沙盒限制了以下功能
  • 禁止訪問本地檔案
  • 禁止使用印表機等資源(可以顯示頁面)
  • 限制網路訪問(同源策略)

同源策略

同源策略是禁止javascript進行跨站訪問的安全策略

javaScript訪問iframe標籤內容

如果主機相同,在iframe的外部就可以通過javascript取得iframe內部HTML內容,但是其它主機上的JavaScript卻無法訪問其內容,這是因為同源策略訪問遭到了絕。

同源的條件

  • URL的主機(DQDN全程域名)一致
  • Scheme(協議)一致
  • 埠號一致

實現Ajax時所用的XMLHttpRequest物件能夠訪問的url也受到了同源策略的限制。

JavaScript以外的跨域訪問

frame元素與iframe元素

iframe元素與frame元素能夠進行跨域訪問通過
但是JavaScript卻不能跨域訪問iframe中的文件內容。

X-FRAME-OPTHONS是微軟公司提供的一種限制frame和iframe訪問許可權的方案,被定義在響應頭資訊中,值為DENY(拒絕)或SAMEORIGIN(僅限同源),可以用來防範點選劫持 用法:header(‘X-FRAME-OPTHONS:SAMEORIGIN’);

img元素

img元素的src屬效能夠指定其它域名,此時請求影象時會附帶影象所在主機的cokie
所以就能夠讓惡意網站上的影象顯示為,“此影象需要認證”。

如果不想讓自己的影象被貼到惡意某些特定網站,則可針對影象檢驗Rederer訊息頭。

script元素

通過向指定script元素的src屬性就能夠從其它網站來讀取javascript。

這種情況也有可能伴隨著JSONP而出現,JSONP是從Ajax應用來訪問不同來源的伺服器中資料時採取的一種方式,但是根據認證狀態的不同,javascript的程式碼會發送變化,從而就可能導致意想不到的資訊洩露事故。

css

css能夠被跨域讀取,除了Html的link元素之外,也能在css中使用@import
或者使用javascript的addImport方法

from元素的action屬性

from元素的action屬性也能跨域指定,而且無論action的目標是否跨域
from的提交都能通過javascript來操作,讓使用者在不知情的情況下提交
內容,從而肆意使用應用中的功能。