摘要:帶著這個(gè)問題查了一些資料,講同源策略的很多,很多地方都說這是安全的基石,但是沒看到哪里明確的提到這只是瀏覽器的行為,和服務(wù)端沒有關(guān)系。
前段時(shí)間寫了個(gè)前后端分離的項(xiàng)目,前后端都是我一個(gè)人完成,通信都是通過接口進(jìn)行的,這時(shí)候就要面對接口安全的問題,api無法使用laravel框架提供的csrf-token等安全措施,我只做了個(gè)簡單的基于session的驗(yàn)證。我的所有api都是通過ajax來進(jìn)行的,心想既然有跨域限制,不允許跨域的話是不是就萬事大吉了呢?跨域限制僅僅是瀏覽器的行為嗎?服務(wù)器有跨域限制嗎?
(此處有誤,可以使用csrf-token,但是在發(fā)起post請求前必須獲取到cookie中的token,將其加入header中,可以加在單頁的入口html里,或者來一次get請求)
如果只是瀏覽器的行為,那么就能輕松繞過了,沒有意義。
帶著這個(gè)問題查了一些資料,講同源策略的很多,很多地方都說這是web安全的基石,但是沒看到哪里明確的提到這只是瀏覽器的行為,和服務(wù)端、http沒有關(guān)系。
于是自己做個(gè)實(shí)驗(yàn)咯,實(shí)驗(yàn)步驟如下:
在阿里云服務(wù)器上用beego起一個(gè)后端應(yīng)用,弄一個(gè)test接口,不設(shè)置Access-Control-Allow-Origin
服務(wù)器上寫一個(gè)靜態(tài)頁面,有個(gè)按鈕點(diǎn)擊發(fā)送ajax請求test接口
本地弄一個(gè)同樣的頁面
本地弄一個(gè)代理服務(wù)器,轉(zhuǎn)發(fā)test至阿里云服務(wù)器
分別進(jìn)行如下測試:
線上頁面在瀏覽器中發(fā)請求到線上服務(wù)器
本地頁面在瀏覽器中發(fā)請求到線上服務(wù)器
修改allow-origin為*,本地頁面在瀏覽器中發(fā)請求到線上服務(wù)器
不設(shè)置allow-origin,本地頁面在瀏覽器中通過代理服務(wù)器請求接口
不設(shè)置allow-origin,使用postman等工具請求接口
測試結(jié)果:除了第二種情況,其他的均能進(jìn)行跨域請求,結(jié)論就是跨域限制僅僅是瀏覽器的行為,通過代理服務(wù)器,或者其他工具發(fā)送請求就能輕松繞過。
那么,同源策略是不是沒有什么卵用呢?
錯(cuò),同源策略是web安全的基石,當(dāng)然很重要了
因?yàn)椋?/p>
隨著互聯(lián)網(wǎng)的發(fā)展,"同源政策"越來越嚴(yán)格。目前,如果非同源,共有三種行為受到限制。
(1) Cookie、LocalStorage 和 IndexDB 無法讀取。
(2) DOM 無法獲得。
(3) AJAX 請求不能發(fā)送。
如果在其他域名能讀qq.com的cookie那就相當(dāng)于它能拿到登陸權(quán)限
reference:
瀏覽器同源政策及其規(guī)避方法-阮一峰
瀏覽器的同源策略-mdn
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/11296.html
摘要:在接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在我們學(xué)習(xí)工作中重復(fù)出現(xiàn),最近在工作中遇到了跨域的相關(guān)問題,這里我把它總結(jié)記錄一下。 在接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在我們學(xué)習(xí)工作中重復(fù)出現(xiàn),最近在工作中遇到了跨域的相關(guān)問題,這里我把它總結(jié)記錄一下。關(guān)于跨域,有N種類型,現(xiàn)在我只專注于ajax請求跨域(ajax跨域只是屬于瀏覽器同源策略中的一部分,其它的這里不做介紹),內(nèi)容...
摘要:關(guān)于,強(qiáng)烈推薦閱讀跨域資源共享詳解阮一峰另外,這里也整理了一個(gè)實(shí)現(xiàn)原理圖簡化版如何判斷是否是簡單請求瀏覽器將請求分成兩類簡單請求和非簡單請求。 前言 從剛接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在身邊重復(fù)出現(xiàn),一直到現(xiàn)在,已經(jīng)調(diào)試過N個(gè)跨域相關(guān)的問題了,16年時(shí)也整理過一篇相關(guān)文章,但是感覺還是差了點(diǎn)什么,于是現(xiàn)在重新梳理了一下。 個(gè)人見識有限,如有差錯(cuò),請多多見諒,歡迎提出iss...
摘要:什么是跨域個(gè)人一句話解釋如果與不同源,那么頁面不能獲取頁面的資源。所以用同源策略來限制跨域是必須的。它是標(biāo)準(zhǔn),是跨源請求的根本解決方法。 本文整理了一些有關(guān)跨域的基礎(chǔ)知識和細(xì)節(jié)問題。 什么是跨域 個(gè)人一句話解釋:如果 url A 與 url B 不同源,那么頁面A不能獲取頁面B的資源。這里有兩個(gè)關(guān)鍵詞:url 和 同源,瀏覽器的同源策略就是針對兩個(gè)url,它們滿足以下三個(gè)條件,才是同源...
摘要:四跨域攻擊跨域攻擊可以理解為誘導(dǎo)受害者訪問非法網(wǎng)站,黑客利用受害者的會話信息模擬請求,以達(dá)到篡改數(shù)據(jù)的目的。我們在百度上搜索一些關(guān)鍵字之后,訪問其他網(wǎng)站時(shí)例如會發(fā)現(xiàn),為何我剛剛搜索的關(guān)鍵字圖片會在網(wǎng)頁上顯示那很有可能放置了百度的腳本代碼。 本人工作中偶爾會和瀏覽器打交道,也遇到過一些坑,在此分享一下網(wǎng)頁跨域訪問的相關(guān)場景和知識,希望對讀者有幫助。本文來自于我的博客網(wǎng)站:www.51th...
閱讀 1477·2021-10-08 10:04
閱讀 799·2021-09-07 09:58
閱讀 2978·2019-08-30 15:55
閱讀 2532·2019-08-29 17:21
閱讀 2239·2019-08-28 18:04
閱讀 3133·2019-08-28 17:57
閱讀 788·2019-08-26 11:46
閱讀 2343·2019-08-23 17:20