csrf跨站请求伪造。
你们都知道,以前项目没有使用先后端分离方案时,成熟的框架解决方案都是在form表单当中增长隐藏列,这样每次提交时都会验证 token ,使用一次后销毁。例如:前端
<form action="//rasp.oneasp.com/account/modifyPassword"> <input .....> <input type="hidden" name="__token__" value="xxxxxxx"/> </form>
先后端分离状况下,该如何实现呢?
很简单,经过cookie,redis实现。
服务端提供一个接口(保证在同一域名下),生成_token_,将_token_写入到redis和cookie。前端再调用接口的时候,要带上这个token.使用一次后从redis中销毁。redis
public function testAction(){ $_token_ = md5(uniqid()); ...#把token存入到redis当中 setcookie('_token_', $_token_, time()+(24*3600), '/'); return false; }
你们有什么好的方案,能够留言讨论。后端