国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript同源策略和跨域訪問實例詳解

2024-05-06 15:20:13
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript同源策略和跨域訪問。分享給大家供大家參考,具體如下:

1. 什么是同源策略

理解跨域首先必須要了解同源策略。同源策略是瀏覽器上為安全性考慮實施的非常重要的安全策略。

何謂同源:

URL由協議、域名、端口和路徑組成,如果兩個URL的協議、域名和端口相同,則表示他們同源。

同源策略:

瀏覽器的同源策略,限制了來自不同源的"document"或腳本,對當前"document"讀取或設置某些屬性。 (白帽子講web安全[1])

從一個域上加載的腳本不允許訪問另外一個域的文檔屬性。

舉個例子:

比如一個惡意網站的頁面通過iframe嵌入了銀行的登錄頁面(二者不同源),如果沒有同源限制,惡意網頁上的javascript腳本就可以在用戶登錄銀行的時候獲取用戶名和密碼。

在瀏覽器中,<script>、<img>、<iframe>、<link>等標簽都可以加載跨域資源,而不受同源限制,但瀏覽器限制了JavaScript的權限使其不能讀、寫加載的內容。

另外同源策略只對網頁的HTML文檔做了限制,對加載的其他靜態資源如javascript、css、圖片等仍然認為屬于同源。

代碼示例(http://localhost:8080/和http://localhost:8081由于端口不同而不同源):

http://localhost:8080/test.html

<html>  <head><title>test same origin policy</title></head>  <body>    <iframe id="test" src="http://localhost:8081/test2.html"></iframe>    <script type="text/javascript">      document.getElementById("test").contentDocument.body.innerHTML = "write somthing";    </script>  </body></html>

http://localhost:8081/test2.html

<html>  <head><title>test same origin policy</title></head>  <body>    Testing.  </body></html>

在Firefox中會得到如下錯誤:

Error: Permission denied to access property 'body'

Document對象的domain屬性存放著裝載文檔的服務器的主機名,可以設置它。

例如來自"blog.Vevb.com"和來自"bbs.Vevb.com"的頁面,都將document.domain設置為"Vevb.com",則來自兩個子域名的腳本即可相互訪問。

出于安全的考慮,不能設置為其他主domain,比如//m.survivalescaperooms.com/不能設置為sina.com

2. Ajax跨域

Ajax (XMLHttpRequest)請求受到同源策略的限制。

Ajax通過XMLHttpRequest能夠與遠程的服務器進行信息交互,另外XMLHttpRequest是一個純粹的Javascript對象,這樣的交互過程,是在后臺進行的,用戶不易察覺。

因此,XMLHTTP實際上已經突破了原有的Javascript的安全限制。

舉個例子:

假設某網站引用了其它站點的javascript,這個站點被compromise并在javascript中加入獲取用戶輸入并通過ajax提交給其他站點,這樣就可以源源不斷收集信息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 平和县| 盐源县| 杭州市| 洛宁县| 定边县| 固安县| 威远县| 清流县| 苏尼特右旗| 丹凤县| 凌海市| 普安县| 茂名市| 青铜峡市| 兴宁市| 府谷县| 治县。| 随州市| 永仁县| 明溪县| 镇原县| 隆子县| 禹城市| 兴化市| 汶上县| 简阳市| 海林市| 奉新县| 阳谷县| 呼和浩特市| 尼玛县| 玉溪市| 清新县| 车险| 常州市| 外汇| 长宁区| 穆棱市| 崇礼县| 涞水县| 玉田县|