模拟表单令牌,解决先后端分离csrf攻击的问题

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;
}

你们有什么好的方案,能够留言讨论。后端

相关文章
相关标签/搜索