Source for file Ethna_Plugin_Csrf.php

Documentation is available at Ethna_Plugin_Csrf.php

  1. <?php
  2. // vim: foldmethod=marker
  3. /**
  4.  *  Ethna_Plugin_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$
  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 $controller;
  28.  
  29.     /** @var    object  Ethna_Controller    controllerオブジェクト($controllerの省略形) */
  30.     var $ctl;
  31.  
  32.     /** @var    object  Ethna_Config        設定オブジェクト */
  33.     var $config;
  34.  
  35.     /** @var    object  Ethna_Logger        ログオブジェクト */
  36.     var $logger;
  37.     
  38.     /** @var    string  共有トークン名 */
  39.     var $token_name 'ethna_csrf';
  40.     
  41.     /**#@-*/
  42.  
  43.  
  44.     /**
  45.      *  Ethna_Plugin_Csrfのコンストラクタ
  46.      *
  47.      *  @access public
  48.      *  @param  object  Ethna_Controller    &$controller    コントローラオブジェクト
  49.      */
  50.     function Ethna_Plugin_Csrf(&$controller)
  51.     {
  52.         // オブジェクトの設定
  53.         $this->controller =$controller;
  54.         $this->ctl =$this->controller;
  55.  
  56.         $this->config =$controller->getConfig();
  57.         $this->logger =$this->controller->getLogger();
  58.     }
  59.     
  60.     /**
  61.      *  トークンをViewとローカルファイルにセットする
  62.      *
  63.      *  @access public
  64.      *  @return string  トークンのKey
  65.      */
  66.     function set()
  67.     {
  68.  
  69.     }
  70.  
  71.     /**
  72.      *  トークンIDを取得する
  73.      *
  74.      *  @access public
  75.      *  @return string トークンIDを返す。
  76.      */
  77.     function get()
  78.     {
  79.  
  80.     }
  81.  
  82.     /**
  83.      *  トークンIDを削除する
  84.      *
  85.      *  @access public
  86.      *  @return string トークンIDを返す。
  87.      */
  88.     function remove()
  89.     {
  90.  
  91.     }
  92.  
  93.     /**
  94.      *  トークン名を取得する
  95.      *
  96.      *  @access public
  97.      *  @return string トークン名を返す。
  98.      */
  99.     function getName()
  100.     {
  101.         return $this->token_name;
  102.     }
  103.  
  104.     /**
  105.      *  トークンIDを検証する
  106.      *
  107.      *  @access public
  108.      *  @return mixed  正常の場合はtrue, 不正の場合はfalse
  109.      */
  110.     function isValid()
  111.     {
  112.         $token $this->_get_token();
  113.  
  114.         $local_token $this->get();
  115.  
  116.         if (is_null($local_token)) {
  117.             return false;
  118.         }
  119.  
  120.         if ($token === $local_token{
  121.             return true;
  122.         }
  123.  
  124.         return false;
  125.     }
  126.  
  127.     /**
  128.      *  キーを生成する
  129.      *
  130.      *  @access public
  131.      *  @return string  keyname
  132.      */
  133.     function _generateKey()
  134.     {
  135.         return Ethna_Util::getRandom(32);
  136.     }
  137.  
  138.     /**
  139.      *  リクエストからトークンIDとリクエストIDを抜き出す
  140.      *
  141.      *  @access public
  142.      *  @return mixed  正常の場合はトークン名, 不正の場合はfalse
  143.      */
  144.     function _get_token()
  145.     {
  146.         $token_name $this->getName();
  147.         if (strcasecmp($_SERVER['REQUEST_METHOD']'post'=== 0{
  148.             return isset($_POST[$token_name]$_POST[$token_namenull;
  149.         else {
  150.             return isset($_GET[$token_name]$_GET[$token_namenull;
  151.         }
  152.     }
  153. }
  154. // }}}
  155. ?>

Documentation generated on Fri, 11 Nov 2011 04:00:09 +0900 by phpDocumentor 1.4.3