模擬表單令牌,解決先後端分離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;
}

你們有什麼好的方案,能夠留言討論。後端

相關文章
相關標籤/搜索