cookie是什麼,能吃嗎? ,
不是那個cookie啦,是瀏覽器用來暫時存放使用者資料的東西
那 sameSite cookie 又是什麼 !!?
sameSite 是用來阻止瀏覽器將Cookie跨網站發送的屬性
Samesite 有三個值可以設定
1.None : 無論sameSite CrossSite的Request上 , 都可以帶有該cookie
2.Strict : 僅限sameSite的Request,才能帶有該cookie
3.Lax : 全部的sameSite Request 及部分的crooSite Request ,可以帶有該cookie
詳情請看這
在cookie policy 更新前 , sameSite的預設都是None ,
但為了提升網路安全 , Google便提出將預設的none改為lax
如何來設定我們的sameSite Cookie 呢 ?
首先! 打開config目錄下的子目錄packages裡的framework.yaml
接著會看到session , 可以將底下的cookie_samesite 改為你要的值 none strict or lax ,
session底下也可以設定cookie的存活時間
framework:
secret: '%env(APP_SECRET)%'
session:
handler_id: ~
cookie_secure: auto
cookie_samesite: lax
cookie_lifetime: 36000
php_errors:
log: true
簡單介紹完sameSite Cookie 後 , 要來進入 CSRF 攻擊的部分了,
簡單來說 ,就是別人利用你的cookie or session 做他想做的事情,任何事都有一體兩面的嘛..
你要方便記錄使用者的資料 , 卻也會被有心人士拿去利用,
就像為什麼當防毒軟體更進化, 病毒就要更進化一樣,因為這樣才有錢賺阿...
阿..不是啦~ 我要說的是科技雖然方便,且不斷地在進步,但卻同時存在著風險 !
cookie 設定的方式有四種,其中兩個是比較危險的
通常防禦CSRF攻擊的方式有兩種
1.檢查referer欄位 , http referer欄位裡會記錄發出請求的網站 , 可以檢查如果不是我們要的網站,一律不接受
2.加入驗證token ,也就是上述提到的CSRF Tokens
詳情請看這
https://medium.com/@Tommmmm/csrf-%E6%94%BB%E6%93%8A%E5%8E%9F%E7%90%86-d0f2a51810ca
sameSite Cookie 跟 CSRF 簡單介紹完 ,
我們要先來為下一篇的API test 做準備,來把前置作業先弄完 !!
首先 , 我們要先執行以下指令來安裝test元件
composer require test --dev
安裝完以後 , 專案目錄裡會看見一個.env.test的檔案,裡面可以針對test環境來設定dataBase
設定完後,執行以下兩個指令來建立database和schema
php bin/console doctrine:database:create --env=test
php bin/console doctrine:schema:create --env=test
Api Test的前置作業也完成了~~
接下來!! 下一篇會先簡單說明Request的生命週期,
再來會寫一個簡單驗證登入的Test,並且寫成共用的test function 來達成方法重用性 ~