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中销毁。
public function testAction(){
$_token_ = md5(uniqid());
...#把token存入到redis当中
setcookie('_token_', $_token_, time()+(24*3600), '/');
return false;
}
大家有什么好的方案,可以留言讨论。