1.主動攻擊與被動攻擊跨域
主動攻擊:攻擊者直接攻擊Web服務器,SQL注入攻擊。瀏覽器
被動攻擊:攻擊者並不直接攻擊服務器,而是針對網站的用戶設下陷阱,利用掉入陷阱的用戶來攻擊應用程序。安全
單純的被動攻擊——將用戶誘導至設有圈套的網站,利用瀏覽器、Adobe Reader、Adobe Flash Player、JRE等插件的漏洞。服務器
惡意利用正規網站進行的被動攻擊——經過在正規網站設置陷阱來實施攻擊。cookie
在正規網站中設置陷阱的方式:網絡
非法獲取FTP等服務器的密碼後篡改網站內容;性能
攻擊WEB服務器的安全隱患來篡改網站內容;網站
經過SQL注入攻擊篡改網站內容;插件
在用戶可以本身發佈內容的網站上,利用跨站腳本實施攻擊。orm
跨站被動攻擊——同時使用惡意網站和正規網站的被動攻擊模式。
2.瀏覽器的安全功能
沙盒,JavaScript、Java Applet、Adobe Flash Player使用的一種策略。
同源策略,禁止JavaScript進行跨站訪問的安全策略,瀏覽器的沙盒環境所提供的一項制約。
注意:若是主機相同,在iframe的外部就可以經過JavaScript取得iframe內部的HTML內容。若是惡意網站能用JavaScript訪問iframe內部信息,那麼我的信息會被惡意網站上的腳本發送給他的服務器。
同源的條件:
URL的主機(全稱域名)一致;
Scheme(協議)一致;
端口號一致。
注意:發送cookie時的條件與協議或端口號無關,針對JavaScript的限制比較嚴格,JavaScript沒有訪問目錄的權限。
3.應用程序安全隱患與被動攻擊
使用iframe外層的JavaScript訪問內層(其餘主機)數據時因爲違反同源策略,訪問會被拒絕。
可是,可使用XSS等手段將JavaScript放到iframe的內層去執行。因爲在iframe內層不會受到同源策略的限制,所以可以成功訪問文檔信息。
第三方JavaScript:
網站運營者執行所信任的第三方JavaScript;
網頁瀏覽者信任第三方而向網頁中嵌入JavaScript。(火狐的插件Greasemonkey)
4.JavaScript之外的跨域訪問
可以進行跨域訪問的其餘瀏覽器功能:
frame元素和iframe元素——iframe元素和frame元素可以進行跨域訪問,但經過JavaScript卻不能跨域訪問iframe中的文檔內容。
X-FRAME-OPTIONS:制定了DENY的響應將不能顯示在frame等的內層中,而SAMEORIGIN的狀況下則僅當與地址欄上顯示的域名爲同源時纔可以被顯示。
將不使用iframe或framed額網站指定爲DENY,使用frame而且使用單一主機的網站指定爲SAMEORIGIN,能夠更好地防護利用frame執行的各類攻擊。
img元素——src屬性可以制定其餘域名,請求圖像時會附帶圖像所在主機的cookie,可以讓惡意網站上的圖像顯示爲「此圖像須要認證」。
若是不想讓本身的圖像被貼到某些特定網站,則能夠針對圖像j檢驗Referer消息頭。這樣會使關閉了Referer的用戶沒法看到圖像。
script元素——指定src屬性可以從其餘網站來讀取JavaScript。
假設A網站讀取B網站的JavaScript:
JavaScrip的源代碼位於B網站的服務器中,可是被讀取後,做用範圍就變成了讀取它的HTML所在的A網站。因此JavaScript執行document.cookie後獲得的即是A網站上的cookie信息。
A網站向B網站發送取得JavaScript的請求時,也會同時向B網站發送cookie。根據用戶在B網站的登陸狀態,B網站的JavaScript代碼有可能會發生變化,從而影響A網站中的內容。
JSONP是從Ajax應用來訪問不一樣來源的服務器中的數據時所採起的一種方式,根據認證狀態的不一樣,JavaScript代碼(JSONP中的數據)會發生變化,可能會致使信息泄露事故,因此JSONP不能用於傳送隱私信息。
CSS——可以被跨域讀取,除了HTML的link元素以外,也能在CSS中使用@import,使用JavaScriptd額addImport方法。
在老版本的IE中,存在CSSXSS安全隱患,使HTML或JS被當作CSS讀取。
form元素的action屬性——action屬性也可以跨域指定,不管action的目標是否跨域,form的提交都能經過JavaScript來操做。
惡意利用form元素的特性來實施攻擊的方式稱爲跨站請求僞造(CSRF),讓用戶在不知情的狀況下提交form,從而肆意使用應用中的功能。
總結:JavaScript的同源策略是瀏覽器防護被動攻擊的表明性對策。若瀏覽器或Web應用中存在安全隱患,攻擊者可繞過同源策略而執行攻擊。