JavaScript同源策略以及跨域

JavaScript 同源策略

概念:同源策略是客戶端腳本(尤其是JavaScript)的重要安全度量標準宛蚓。其目的是防止某個文檔或腳本從多個不同源裝載跃闹。

同源指的是:協(xié)議,域名(包括子域名),端口相同挠进。同源策略是一種安全協(xié)議沮明。

具體表現(xiàn)在JS中:一段腳本自能讀取來自同一來源的窗口的文檔和屬性辕坝。(iframe.contentDocument 等訪問錯誤)

為什么要有同源限制?

如果沒有同源策略荐健,黑客通過iframe偽造一個網(wǎng)銀登錄界面酱畅,在父頁面上直接獲取iframe里面輸入框的值。就能完成竊取賬號密碼的侵入行為江场。

跨域的一些方案

只列出了一些方案纺酸,具體示例可查看參考鏈接里面的文章。

  1. document.domain

  2. 通過iframe嵌入頁面

  3. 修改兩個頁面的 document.domain 為相同的主域(適用于主域相同扛稽,子域不同的頁面通信吁峻,修改domain只能修改為自身或更高一級)

  4. 兩個頁面的 JavaScript通過對應的方法和屬性訪問彼此的元素和屬性

  5. jsonp

  6. 本地提供需要執(zhí)行的方法

  7. 動態(tài)加載 script 提供callback參數(shù)

  8. 動態(tài)請求 script,服務端塞入數(shù)據(jù) jsonp(json with padding)

  9. 請求完的 script 在頁面上執(zhí)行(已塞入遠端數(shù)據(jù))

  10. window.name (個人感覺使用 window.name 跨域的方式比較雞肋在张,一定是我打開的方式不對吧)

  • 原理:一個窗口(window)的生命周期內(nèi)用含,窗口載入的所有頁面都共享一個 window.name,每個頁面對window.name 都有讀寫權限帮匾。(在測試中覺得父頁面和iframe是不共享 window.name 的)
  • 生命周期是指一個tab頁面從打開到關閉啄骇。包括發(fā)生在該頁面上的跳轉(zhuǎn)操作。只要沒有關閉頁面瘟斜,依舊可以讀取之前設置的window.name 屬性缸夹。
  • 跨域?qū)崿F(xiàn):首先在 parent 頁面通過 iframe 引入要設置 window.name 的頁面痪寻,待頁面加載完畢后,跳轉(zhuǎn)到和 parent 頁面同域的一個中間頁面(保留了目標頁面設置的 window.name 屬性)虽惭。在父頁面通過獲取 iframe橡类,調(diào)用 iframe.contentWindow.name 獲取到設置好的 window.name 屬性。
  1. HTML5 postMessage
  • HTML5 所提供的一個 API 方法
  • window.postMessage(data, origin) 向 origin 匹配域頁面發(fā)送 data 數(shù)據(jù)芽唇。
  • window.onmessage = function(msg) {} 監(jiān)聽 message 事件顾画,在收到 post 過來的數(shù)據(jù)時觸發(fā)。 msg.data存儲傳遞過來的message匆笤,msg.soruce 存儲發(fā)送消息的窗口對象研侣,msg.origin 存儲發(fā)送消息的窗口的源(協(xié)議+主機+端口號)

參考文章:

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炮捧,一起剝皮案震驚了整個濱河市庶诡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咆课,老刑警劉巖末誓,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異书蚪,居然都是意外死亡基显,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門善炫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩幽,“玉大人,你說我怎么就攤上這事箩艺〈茏恚” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵艺谆,是天一觀的道長榨惰。 經(jīng)常有香客問我,道長静汤,這世上最難降的妖魔是什么琅催? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮虫给,結(jié)果婚禮上藤抡,老公的妹妹穿的比我還像新娘。我一直安慰自己抹估,他們只是感情好缠黍,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著药蜻,像睡著了一般瓷式。 火紅的嫁衣襯著肌膚如雪替饿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天贸典,我揣著相機與錄音视卢,去河邊找鬼。 笑死廊驼,一個胖子當著我的面吹牛腾夯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔬充,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼班利!你這毒婦竟也來了饥漫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤罗标,失蹤者是張志新(化名)和其女友劉穎庸队,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闯割,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡彻消,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宙拉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宾尚。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖谢澈,靈堂內(nèi)的尸體忽然破棺而出煌贴,到底是詐尸還是另有隱情,我是刑警寧澤锥忿,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布牛郑,位于F島的核電站,受9級特大地震影響敬鬓,放射性物質(zhì)發(fā)生泄漏淹朋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一钉答、第九天 我趴在偏房一處隱蔽的房頂上張望础芍。 院中可真熱鬧,春花似錦数尿、人聲如沸者甲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虏缸。三九已至鲫懒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刽辙,已是汗流浹背窥岩。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宰缤,地道東北人颂翼。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像慨灭,于是被迫代替她去往敵國和親朦乏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 什么是跨域氧骤? 2.) 資源嵌入:呻疹、、筹陵、等dom標簽刽锤,還有樣式中background:url()、@font-fac...
    電影里的夢i閱讀 2,368評論 0 5
  • 跨域問題產(chǎn)生的原理是指通過js在不同的域之間進行數(shù)據(jù)傳輸或通信朦佩,比如用ajax向一個不同的域請求數(shù)據(jù)并思,或者通過js...
    往復隨安_cc75閱讀 514評論 0 1
  • 朋友圈里不止三名好友的昵稱是“以夢為馬”宋彼,各大雞湯軟文里也隨處可見。語文還算可以的我竟然對這幾個字沒有任何感覺仙畦,連...
    小螢子閱讀 9,111評論 0 2
  • 這幾天都在用禪繞畫練習線條宙暇,感覺還是有效果的。 那么今天又跟著心藍大大畫了個漂流瓶议泵。 當然了占贫,比例什么的我就沒去細...
    夜下小雨閱讀 176評論 2 1
  • 云中誰寄錦書來? 一句對白 一聲感慨 憶江南巴蜀四月天 有你的甜甜笑臉 生命的去來 走到一起 又無奈分開 遙望云端...
    FiftytwoHzwhale閱讀 199評論 0 0