yii中csrf的验证机制

  介绍

小编给大家分享一下yii中csrf的验证机制,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

<强>跨站请求伪造(英语:跨站点请求伪造),也被称为>/* *   ,* Returns 从而token  used 用perform  CSRF 验证。   ,*返回用于执行CSRF验证的令牌   ,*却;能够token  is  a  masked  version  of  [[rawCsrfToken]],用prevent  (BREACH 袭击)(http://breachattack.com/)。   ,*却;能够token  may  be  passed  along  via  a  hidden  field  of  an  HTML  form 或是an  HTTP  header 价值   ,*用support  CSRF 验证。   ,* @param  boolean  regenerate 美元;whether 用regenerate  CSRF 令牌只When 却;能够parameter  is 的确,each 时间   ,*却;能够method  is ,, a  new  CSRF  token  will  be  generated 以及persisted  (cookie session 拷贝,或是)。   ,* @return  string 从而token  used 用perform  CSRF 验证。   ,*/public  function  getCsrfToken (regenerate 美元;=,假)   {   ,,,if  ($ this→_csrfToken ===, null  | |,再生美元),{   ,,,,,,,if  (regenerate 美元;| |,($ token =, $ this→loadCsrfToken ()),===, null), {,,,//loadCsrfToken()就是在饼干或者会话中获取令牌值   ,,,,,,,,,,,token 美元;=,$ this→generateCsrfToken(),,,,,,,,,//如果标记为空则调用generateCsrfToken()去生成   ,,,,,,,}   ,,,,,,,//,,mask 并# 39;t  need 用be 非常随机的   ,,,,,,,chars 美元;=,& # 39;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ -强生# 39;;   ,,,,,,,mask 美元;=,substr(作用(函数($字符,5)),,0,,静态::CSRF_MASK_LENGTH);   ,,,,,,,//,,+,sign  may  be  decoded  as  blank  space 后来,which  will  fail 从而验证   ,,,,,,,这个→美元_csrfToken =, str_replace(& # 39; + & # 39;,, & # 39;强生# 39;,,base64_encode (mask 美元;只$ this→xorTokens(令牌美元,,面具)));   ,,,}      ,,,return  $ this→_csrfToken;   }/* *   ,* Loads 从而CSRF  token 得到cookie 一、会话。   ,* @return  string 从而CSRF  token  loaded 得到cookie 一、会话只Null  is  returned  if 从而cookie 一、会话   ,* does  not  have  CSRF 令牌。   ,*/protected  function  loadCsrfToken ()   {   ,,,if  ($ this→enableCsrfCookie), {   ,,,,,,,return  $ this→getCookies ()→getValue ($ this→csrfParam),,,,,,,,,,//cookie中获取csrf的token    ,,,},{else    ,,,,,,,return  Yii:应用程序→美元getSession()→得到($ this→csrfParam),,,,,,,,,,,//会话中获取csrf的令牌   ,,,}   }/* *   ,* Creates  a  cookie  with  a  randomly  generated  CSRF 令牌。   ,* Initial  values  specified  [[csrfCookie]],拷贝will  be  applied 用,generated 饼干。   ,* @param  string  token 美元;从而CSRF 令牌   ,* @return  Cookie 从而generated 饼干   ,* @see  enableCsrfValidation   ,*/protected  function  createCsrfCookie(令牌)   {   ,,,options 美元;=,$ this→csrfCookie;   ,,,选择美元[& # 39;名字# 39;],=,$ this→csrfParam;   ,,,选择美元[& # 39;价值# 39;],=,美元令牌;   ,,,return  new 饼干(选项);   }/* *   ,* Generates , an  unmasked  random  token  used 用perform  CSRF 验证。   ,* @return  string 从而random  token  for  CSRF 验证。   ,*/protected  function  generateCsrfToken ()   {   ,,,token 美元;=,Yii:应用程序→美元getSecurity ()→generateRandomString(),,,,,,,//生成随机的安全字符串   ,,,if  ($ this→enableCsrfCookie), {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

yii中csrf的验证机制