我們從Breeze的Template,就可以學到很多Laravel的機制。
譬如說在:resources>views>auth>register.blade.php
會看到@csrf
命令式,
就一起來讀一下Laravel CSRF保護機制。
CSRF: ross-site request forgery跨站請求偽造,
網路上可以看到一些攻擊的案例,例如說,
一個無辜的A 登入銀行B,並沒有登出還存有Cookie,然後踩到了惡意網站,
惡意網站就使用自身的Domain去呼叫並登入你在銀行A的Login endpoint。
然後就可以做一些壞壞的事情了。
Laravel會在用戶登入後給每一個Session(工作階段) 一個CSRF "token",
這個Token每一個Session都會被更新,而且存在Session裡面,所以不會發生CSRF機制。
當我們在撰寫HTML form時,我們就可以使用@csrf
去使用CSRF token的Middleware。
其實相當於我們使用一個隱藏的表單,送出用戶的CSRF token
<form method="POST" action="/profile">
@csrf
<!-- 相當於 -->
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
</form>