成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

淺談js跨域問題

learn_shifeng / 2233人閱讀

摘要:使用的方法假設要在和頁面之間傳遞數(shù)據(jù)頁面頁面參考鏈接下面談一下跨域訪問的一些安全性問題,主要是和攻擊問題。在跨域訪問中,注入主要是參數(shù)注入,如防止措施是對參數(shù)進行校驗過濾。

所謂跨域,或者異源,是指主機名(域名)、協(xié)議、端口號只要有其一不同,就為不同的域(或源)。瀏覽器中有一個基本的策略,叫同源策略,即限制“源”自A的腳本只能操作“同源”頁面的DOM。

先聊一下w3c的CORS規(guī)范
CORS旨在定義一種規(guī)范讓瀏覽器在接收到從提供者獲取資源時能夠決定是否應該將此資源分發(fā)給消費者作進一步處理。
具體如下:
(1)消費者發(fā)送一個Origin報頭到提供者端:Origin: http://www.a.com;
(2)提供者發(fā)送一個Access-Control-Allow-Origin響應報頭給消費者,如果值為*或Origin對應的站點,則表示同意共享資源給消費者,如果值為null或者不存在Access-Control-Allow-Origin報頭,則表示不同意共享資源給消費者;
(3)瀏覽器根據(jù)提供者的響應報文判斷是否允許消費者跨域訪問到提供者源。

除了CORS,解決跨域還有以下幾種方法:

1、通過Jsonp跨域

對于一段JavaScript腳本來說,其“源”與它存儲的地址無關,而取決于腳本被加載的頁面,例如我們在頁面中使用
這里腳本與當前頁面是同源的。除了

也可以使用jquery封裝的方法,如$.ajax:


當然還需要服務端配合處理:

String handleData = request.getParameter("callback");//客戶端的回調函數(shù)
out.println(handleData+"("+resultJSON+")");//返回jsonp格式數(shù)據(jù)

但這種方式只能用于get請求 (╯-╰)/。

2、修改document.domain來跨子域

www.a.com/1.html和a.com/2.html是不同域的,要使他們可以跨域訪問,可通過修改document.domain來實現(xiàn),即在兩個頁面中都設置:
document.domain="a.com";
需要注意的是document.domain只能往父級修改,如a.com改為www.a.com是不被允許的,這也是此方法的局限性,只使用于跨子域訪問。

3、使用window.name來跨域訪問

window.name是同一瀏覽器窗口下載入的所有頁面共享的數(shù)據(jù)字段,所有窗口都可以讀寫此字段的內容。所以假設a.com要訪問b.com的數(shù)據(jù),只需要在b.com中將數(shù)據(jù)放在window.name中,然后a.com從中取出即可。此方法適用于像iframe這樣的嵌套頁面架構。

4、使用HTML5的window.postMessage方法:

假設要在a.com和b.com頁面之間傳遞數(shù)據(jù):

//a.com頁面
window.postMesssage(JSON.stringify({xxx:"test"},"b.com");
//b.com頁面
window.onMessage=function(e){
    var data = JSON.parse(e.data);
    console.log(data); //{xxx:"test"}
}

參考鏈接:http://javascript.ruanyifeng.com/bom/windowpostmessage.html

下面談一下跨域訪問的一些安全性問題,主要是CSRF和XSS攻擊問題。

一、CSRF/XSRF攻擊

網上找到一個大神發(fā)的圖,貼在這里膜拜一下:

其實就是危險網站B在自己網站上貼了網站A的某個接口鏈接(a標簽或form提交是支持跨域的),引導用戶點擊(騙取用戶cookie)去訪問網站A,禍因在于用戶登錄了A在不注銷的情況下登錄了B。解決方法有很多,如驗證碼,表單附加隨機數(shù)等,原理基本都是校驗登錄方的請求令牌。
如果使用跨域訪問可以更簡單的進行CSRF攻擊(當然也有相應的防范措施),當某網站通過JSONP方式來跨域傳遞用戶認證后的敏感信息時,攻擊者可以構造惡意的JSONP調用頁面,誘導被攻擊者訪問來達到截取用戶敏感信息的目的。(這里有一個微博股吧CSRF攻擊的例子)
目前比較好的防止CSRF攻擊的方法是referer過濾校驗+token驗證,即服務端檢測JSON文件調用來源和檢查token數(shù)據(jù)是否匹配。

二、XSS攻擊(XSS注入)

此攻擊方法類似sql注入,即提交含有惡意腳本的數(shù)據(jù)到服務器,從而達到破壞頁面甚至盜取cookie偽裝登錄等目的。例如,在a.com/index.ftl中有如下代碼:歡迎你,${username},這時惡意網站b.com傳遞參數(shù):
username=
這樣就輕而易舉地盜取了用戶的cookie值了。
在jsonp跨域訪問中,xss注入主要是callback參數(shù)注入,如:
">
防止措施是對參數(shù)進行校驗過濾。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/86006.html

相關文章

  • 淺談瀏覽器端JavaScript跨域解決方法

    摘要:回調函數(shù)數(shù)據(jù)就是了,回調函數(shù)用來響應應該在頁面中調用的函數(shù),數(shù)據(jù)則用來傳入要執(zhí)行的回調函數(shù)。比如會得到小明這樣,里面的這個函數(shù)就能執(zhí)行并且得到數(shù)據(jù)了。 由于安全的原因,瀏覽器做了很多方面的工作,由此也就引入了一系列的跨域問題,需要注意的是: 跨域并非瀏覽器限制了發(fā)起跨站請求,而是跨站請求可以正常發(fā)起,但是返回結果被瀏覽器攔截了。最好的例子是 crsf 跨站攻擊原理,請求是發(fā)送到了后端服...

    dantezhao 評論0 收藏0
  • 淺談前端跨域

    摘要:一什么是跨域跨域簡單的理解就是同源策略的限制。同源策略限制的內容請求不能正常進行。同源策略默認地址是網頁的本身。 一、什么是跨域? 跨域簡單的理解就是JavaScript同源策略的限制。是出于安全的考慮,a.com域名下的js不能操作b.com或者c.com域名下的對象。 當協(xié)議、子域名、主域名、端口號中任意一個不相同時,都算作不同域。不同域之間相互請求資源,就算叫跨域。 一個正常...

    dunizb 評論0 收藏0
  • 淺談JSONP

    摘要:就這樣被發(fā)明了,利用的屬性不受同源策略的控制,作弊般地巧妙地逃過了瀏覽器的這一限制。然后,聲明這個回調函數(shù)。 這是我在13年初寫的文章,當時懵懵懂懂寫下了自己對JSONP的理解。 文章原文 博客 歡迎訂閱 提到JSONP,我當時在網上找了無數(shù)帖子也沒有看懂它。那些文章大同小異,都是講到JSONP原理以后就戛然而止,把我們這些初學者搞得云里霧里。所以,寫下這篇文章,希望對大家有幫助...

    binta 評論0 收藏0
  • 淺談模塊化加載的實現(xiàn)原理

    摘要:如果你不太明白模塊化的作用,建議看看玉伯寫的一篇文章。我們可以使用自己的方式去管理代碼,不過有人已經研究處理一套標準,而且是全球統(tǒng)一,那就拿著用吧關于規(guī)范,我這里就不多說了,可以去看看草案,玉伯也翻譯了一份。 試發(fā)一彈,本文同步自:http://barretlee.com 略蛋疼的是不支持: [title][url reference] 相信很多人都用過 seajs、 require...

    CodeSheep 評論0 收藏0
  • 淺談前端中的錯誤捕獲

    摘要:淺談前端中的錯誤捕獲某一天用戶反饋打開的頁面白屏幕,怎么定位到產生錯誤的原因呢日常某次發(fā)布怎么確定發(fā)布會沒有引入呢此時捕獲到代碼運行的并上報是多么的重要。 淺談前端中的錯誤捕獲 某一天用戶反饋打開的頁面白屏幕,怎么定位到產生錯誤的原因呢?日常某次發(fā)布怎么確定發(fā)布會沒有引入bug呢?此時捕獲到代碼運行的bug并上報是多么的重要。 既然捕獲錯誤并上報是日常開發(fā)中不可缺少的一環(huán),那怎么捕獲到...

    li21 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<