Source for file Csrf.php

Documentation is available at Csrf.php

  1. <?php
  2. // vim: foldmethod=marker
  3. /**
  4.  *  Csrf.php
  5.  *
  6.  *  @author     Keita Arai <cocoiti@comio.info>
  7.  *  @license    http://www.opensource.org/licenses/bsd-license.php The BSD License
  8.  *  @package    Ethna
  9.  *  @version    $Id: f83ba6f30efda3986b01352abb0c8278944ef623 $
  10.  */
  11.  
  12. // {{{ Ethna_Plugin_Csrf
  13. /**
  14.  *  CSRF対策基底クラス
  15.  *
  16.  *  CSRF対策をトークンを用いて対策するためのコード
  17.  *
  18.  *  @author     Keita Arai <cocoiti@comio.info>
  19.  *  @access     public
  20.  *  @package    Ethna
  21.  */
  22. {
  23.     /**#@+
  24.      *  @access private
  25.      */
  26.  
  27.     /** @var    string  共有トークン名 */
  28.     protected $token_name = 'ethna_csrf';
  29.  
  30.     /**#@-*/
  31.  
  32.  
  33.     /**
  34.      *  Csrfのコンストラクタ
  35.      *
  36.      *  @access public
  37.      *  @param  object  Ethna_Controller    &$controller    コントローラオブジェクト
  38.      */
  39.     /**
  40.      *  トークンをViewとローカルファイルにセットする
  41.      *
  42.      *  @access public
  43.      *  @return string  トークンのKey
  44.      */
  45.     public function set()
  46.     {
  47.  
  48.     }
  49.  
  50.     /**
  51.      *  トークンIDを取得する
  52.      *
  53.      *  @access public
  54.      *  @return string トークンIDを返す。
  55.      */
  56.     public function get()
  57.     {
  58.  
  59.     }
  60.  
  61.     /**
  62.      *  トークンIDを削除する
  63.      *
  64.      *  @access public
  65.      *  @return string トークンIDを返す。
  66.      */
  67.     public function remove()
  68.     {
  69.  
  70.     }
  71.  
  72.     /**
  73.      *  トークン名を取得する
  74.      *
  75.      *  @access public
  76.      *  @return string トークン名を返す。
  77.      */
  78.     public function getTokenName()
  79.     {
  80.         return $this->token_name;
  81.     }
  82.  
  83.     /**
  84.      *  トークンIDを検証する
  85.      *
  86.      *  @access public
  87.      *  @return mixed  正常の場合はtrue, 不正の場合はfalse
  88.      */
  89.     public function isValid()
  90.     {
  91.         $token $this->_get_token();
  92.  
  93.         $local_token $this->get();
  94.  
  95.         if (is_null($local_token)) {
  96.             return false;
  97.         }
  98.  
  99.         if ($token === $local_token{
  100.             return true;
  101.         }
  102.  
  103.         return false;
  104.     }
  105.  
  106.     /**
  107.      *  キーを生成する
  108.      *
  109.      *  @access public
  110.      *  @return string  keyname
  111.      */
  112.     protected function _generateKey()
  113.     {
  114.         return Ethna_Util::getRandom(32);
  115.     }
  116.  
  117.     /**
  118.      *  リクエストからトークンIDとリクエストIDを抜き出す
  119.      *
  120.      *  @access public
  121.      *  @return mixed  正常の場合はトークン名, 不正の場合はfalse
  122.      */
  123.     protected function _get_token()
  124.     {
  125.         $token_name $this->getTokenName();
  126.         if (strcasecmp($_SERVER['REQUEST_METHOD']'post'=== 0{
  127.             return isset($_POST[$token_name]$_POST[$token_namenull;
  128.         else {
  129.             return isset($_GET[$token_name]$_GET[$token_namenull;
  130.         }
  131.     }
  132. }
  133. // }}}

Documentation generated on Fri, 11 Nov 2011 03:57:55 +0900 by phpDocumentor 1.4.3