亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

js同源策略詳解

 更新時間:2015年05月21日 11:53:25   作者:yaoyuan_difang  
這篇文章主要介紹了js同源策略,較為詳細的分析了javascript中同源策略的概念與相關(guān)應用注意事項,需要的朋友可以參考下

本文較為詳細的分析了js同源策略。分享給大家供大家參考。具體如下:

概念:同源策略是客戶端腳本(尤其是Javascript)的重要的安全度量標準。它最早出自Netscape Navigator2.0,其目的是防止某個文檔或腳本從多個不同源裝載。

這里的同源指的是:同協(xié)議,同域名和同端口。

精髓:

它的精髓很簡單:它認為自任何站點裝載的信賴內(nèi)容是不安全的。當被瀏覽器半信半疑的腳本運行在沙箱時,它們應該只被允許訪問來自同一站點的資源,而不是那些來自其它站點可能懷有惡意的資源。

為什么要有同源限制?

我們舉例說明:比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。

Ajax應用:

在Ajax應用中這種安全限制被突破。

在普通的Javascript應用中,我們可以修改Frame的href,或者IFrame的src,以實現(xiàn)GET方式的跨域提交,但是卻不能訪問跨域的Frame/IFrame中的內(nèi)容。

而Ajax它通過XMLHTTP進行異步交互,這個對象同樣能夠與遠程的服務器進行信息交互,而且更加危險的是,XMLHTTP是一個純粹的Javascript對象,這樣的交互過程,是在后臺進行的,不被用戶察覺。因此,XMLHTTP實際上已經(jīng)突破了原有的Javascript的安全限制。

如果我們又想利用XMLHTTP的無刷新異步交互能力,又不愿意公然突破Javascript的安全策略,可以選擇的方案就是給XMLHTTP加上嚴格的同源限制。這樣的安全策略,很類似于Applet的安全策略。IFrame的限制還僅僅是不能訪問跨域HTMLDOM中的數(shù)據(jù),而XMLHTTP則根本上限制了跨域請求的提交。

瀏覽器支持:而IE其實給這個安全策略開了兩個想當然的后門,一個是:他假設(shè)你的本地文件,自然清楚將會訪問什么內(nèi)容,所以任何你的本地文件訪問外部數(shù)據(jù), 都不會收到任何的警告。另一個是:當你訪問的網(wǎng)站腳本打算訪問跨域的信息時, 他居然僅僅是彈出一個對話框來提醒你一下。如果一個欺詐網(wǎng)站,采用這樣的手段,提供一個假頁面給你,然后通過XMLHTTP幫你遠程登錄真實的銀行服務器。只要10個用戶里,有一個用戶糊涂一下,點了一個確定。他們的盜取帳號行為,就成功了! 你想想看,這是何等危險的事情!

FireFox就不是這樣的做法,缺省的情況下,F(xiàn)ireFox根本就不支持跨域的XMLHTTP請求,根本就不給黑客這樣的機會。

避免同源策略:

JSON和動態(tài)腳本標記

<script type="text/javascript"
src="http://yoursiteweb.com/findItinerary?username=sachiko&
reservationNum=1234&output=json&callback=showItinerary" /> 

當 JavaScript 代碼動態(tài)地插入 <script> 標記時,瀏覽器會訪問 src 屬性中的 URL。這樣會導致將查詢字符串中的信息發(fā)送給服務器。在 清單 1中,所傳遞的是 username 和 reservation 作為名稱值對傳遞。此外,查詢字符串還包含向服務器請求的輸出格式和回調(diào)函數(shù)的名稱(即 showItinerary)。<script> 標記加載后,會執(zhí)行回調(diào)函數(shù),并通過回調(diào)函數(shù)的參數(shù)把從服務返回的信息傳遞給該回調(diào)函數(shù)。

Ajax代理

Ajax 代理是一種應用級代理服務器,用于調(diào)解 Web 瀏覽器和服務器之間的 HTTP 請求和響應。Ajax 代理允許 Web 瀏覽器繞過同源策略,這樣便可以使用 XMLHttpRequest 訪問第三方服務器。要實現(xiàn)這種繞過,有如下兩種方法可供選擇:
客戶端 Web 應用程序知道第三方 URL 并將該 URL 作為 HTTP 請求中的一個請求參數(shù)傳遞給 Ajax 代理。然后,代理將請求轉(zhuǎn)發(fā)給 [url]chabaoo.cn[/url]。注意,可以把代理服務器的使用隱藏在 Web應用程序開發(fā)人員所使用的 Ajax 庫的實現(xiàn)中。對于 Web 應用程序開發(fā)人員而言,它看上去可能完全不具有同源策略。
客戶端 Web 應用程序不知道第三方 URL,并且嘗試通過 HTTP 訪問 Ajax 代理服務器上的資源。通過一個預定義的編碼規(guī)則,Ajax 代理將 所請求的 URL 轉(zhuǎn)換為第三方服務器的 URL 并代表客戶檢索內(nèi)容。這樣一來,Web 應用程序開發(fā)人員看上去就像是在和代理服務器直接進行通信。

Greasemonkey

Greasemonkey 是一個 Firefox 擴展,它允許用戶動態(tài)地對 Web 頁面的樣式和內(nèi)容進行修改。Greasemonkey 用戶可以把用戶腳本(user script)文件與一個 URL 集合建立關(guān)聯(lián)。當瀏覽器通過該 URL 集合加載頁面時,便會執(zhí)行這些腳本。Greasemonkey 為用戶腳本的 API 提供了額外的許可(與運行在瀏覽器沙盒中的腳本的許可相比較)。

GM_XMLHttpRequest 是其中的一個 API,它從本質(zhì)上說就是一個不具有同源策略的 XMLHttpRequest。用戶腳本可以將瀏覽的內(nèi)置 XMLHttpRequest 替代為 GM_XMLHttpRequest,從而許可 XMLHttpRequest 執(zhí)行跨域訪問。

GM_XMLHttpRequest 的使用只能通過用戶同意的途徑才能受到保護。也就是說,Greasemonkey 只有在建立新用戶腳本與特定 URL 的集合之間的關(guān)聯(lián)時才會要求用戶配置。然而,不難想象一些用戶可能會被欺騙,在沒有完全理解其后果時就接受該安裝。

希望本文所述對大家的javascript程序設(shè)計有所幫助。

相關(guān)文章

  • uniapp打包成微信小程序的詳細過程

    uniapp打包成微信小程序的詳細過程

    微信小程序的出現(xiàn)給我們提供了一種使用應用的新方式和體驗,下面這篇文章主要給大家介紹了關(guān)于uniapp打包成微信小程序的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 一個不錯的仿攜程自定義數(shù)據(jù)下拉選擇select

    一個不錯的仿攜程自定義數(shù)據(jù)下拉選擇select

    這是一個仿攜程自定義的數(shù)據(jù)下拉選擇select,對一些比較重要的參數(shù)進行的描述,方便初學者
    2014-09-09
  • location.hash保存頁面狀態(tài)的技巧

    location.hash保存頁面狀態(tài)的技巧

    hash 屬性是一個可讀可寫的字符串,該字符串是 URL 的錨部分(從 # 號開始的部分)。接下來通過本文給大家介紹location.hash保存頁面狀態(tài)的相關(guān)內(nèi)容,感興趣的朋友一起學習吧
    2016-04-04
  • bootstrap警告框示例代碼分享

    bootstrap警告框示例代碼分享

    這篇文章主要為大家詳細介紹了bootstrap警告框示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • el-input 密碼自動填充的方法匯總

    el-input 密碼自動填充的方法匯總

    在開發(fā) Web 應用時,通常需要避免瀏覽器自動填充密碼,以下是一些可行的解決方案,特別針對使用 Element UI 框架的 el-input 組件,下面給大家分享el-input 密碼自動填充的方法,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • js中數(shù)組的常用方法小結(jié)

    js中數(shù)組的常用方法小結(jié)

    這篇文章主要介紹了js中數(shù)組的常用方法,結(jié)合實例形式分析了js中的常用數(shù)組方法,如push、concat、pop、splice、reverse、join等功能與用法,需要的朋友可以參考下
    2016-12-12
  • JS常用算法實現(xiàn)代碼

    JS常用算法實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了用JS常用幾個算法的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 原生JS實現(xiàn)天氣預報

    原生JS實現(xiàn)天氣預報

    這篇文章主要為大家詳細介紹了原生JS實現(xiàn)天氣預報,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 基于Javascript實現(xiàn)的不重復ID的生成器

    基于Javascript實現(xiàn)的不重復ID的生成器

    本文介紹了js生成一個不重復的ID的函數(shù)的進化之路,具有一定的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • js簡單遍歷獲取對象中的屬性值的方法示例

    js簡單遍歷獲取對象中的屬性值的方法示例

    這篇文章主要介紹了js簡單遍歷獲取對象中的屬性值的方法,涉及javascript使用for循環(huán)遍歷json對象屬性值的簡單操作技巧,需要的朋友可以參考下
    2019-06-06

最新評論