For non-PHP based web-clients (JSON) making use of Laravel Controllers; What would be the potential alternatives to CSRF tokens in Laravel to secure web requests?
2条回答 默认 最新
- dounang1974 2016-10-28 09:40关注
If your API uses an authentication scheme that does not depend on the authentication token being sent automatically by the browser (which practically means the token or session id is not in a cookie), your API is not vulnerable to CSRF. This includes token-based auths, unless the token is stored in a cookie.
If cookies are used to pass auth tokens (including session ids, which is the same in this respect), you need CSRF protection for all requests that change server state (mostly data, but also logon status or privilege level for example).
For Laravel, you need to pass the token value from the
XSRF-TOKEN
cookie as a request header value inX-CSRF-TOKEN
. With jQuery, this is easily accomplished in any client framework by reading the cookie value and adding it to requests:$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': csrfCookieValue } });
If your client is not browser based, you can implement a different protection than the one in Laravel already. OWASP has a cheat sheet on what your options are, probably double submit is the easiest to implement while being reasonably secure. In very short, you create a random token and send that to the server as a cookie and also as a request header, the server only compares whether the two (cookie and header) match. This works, because an attacker on a differnet origin (domain) cannot set or access a cookie for the application origin due to the same origin policy in browsers.
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报