前段時間寫了個先後端分離的項目,先後端都是我一我的完成,通訊都是經過接口進行的,這時候就要面對接口安全的問題,api沒法使用laravel框架提供的csrf-token等安全措施,我只作了個簡單的基於session的驗證。個人全部api都是經過ajax來進行的,心想既然有跨域限制,不容許跨域的話是否是就萬事大吉了呢?跨域限制僅僅是瀏覽器的行爲嗎?服務器有跨域限制嗎?html
(此處有誤,可使用csrf-token,可是在發起post請求前必須獲取到cookie中的token,將其加入header中,能夠加在單頁的入口html裏,或者來一次get請求)laravel
若是隻是瀏覽器的行爲,那麼就能輕鬆繞過了,沒有意義。web
帶着這個問題查了一些資料,講同源策略的不少,不少地方都說這是web安全的基石,可是沒看到哪裏明確的提到這只是瀏覽器的行爲,和服務端、http沒有關係。ajax
因而本身作個實驗咯,實驗步驟以下:後端
分別進行以下測試:api
測試結果:除了第二種狀況,其餘的均能進行跨域請求,結論就是跨域限制僅僅是瀏覽器的行爲,經過代理服務器,或者其餘工具發送請求就能輕鬆繞過。跨域
那麼,同源策略是否是沒有什麼卵用呢?
錯,同源策略是web安全的基石,固然很重要了瀏覽器
由於:安全
隨着互聯網的發展,"同源政策"愈來愈嚴格。目前,若是非同源,共有三種行爲受到限制。
(1) Cookie、LocalStorage 和 IndexDB 沒法讀取。
(2) DOM 沒法得到。
(3) AJAX 請求不能發送。
若是在其餘域名能讀qq.com的cookie那就至關於它能拿到登錄權限服務器
reference:
瀏覽器同源政策及其規避方法-阮一峯
瀏覽器的同源策略-mdn