Example #1
0
 /**
  * 認証の可否判定
  *
  * @param Session $objSess
  * @param bool $disp_error
  * @return bool
  */
 public static function sfIsSuccess(Session $objSess, $disp_error = true)
 {
     $ret = $objSess->IsSuccess();
     if ($ret != SUCCESS) {
         if ($disp_error) {
             // エラーページの表示
             static::sfDispError($ret);
         }
         return false;
     }
     // リファラーチェック(CSRFの暫定的な対策)
     // 「リファラ無」 の場合はスルー
     // 「リファラ有」 かつ 「管理画面からの遷移でない」 場合にエラー画面を表示する
     if (empty($_SERVER['HTTP_REFERER'])) {
         // TODO 警告表示させる?
         // sfErrorHeader('>> referrerが無効になっています。');
     } else {
         $domain = static::sfIsHTTPS() ? HTTPS_URL : HTTP_URL;
         $pattern = sprintf('|^%s.*|', $domain);
         $referer = $_SERVER['HTTP_REFERER'];
         // 管理画面から以外の遷移の場合はエラー画面を表示
         if (!preg_match($pattern, $referer)) {
             if ($disp_error) {
                 static::sfDispError(INVALID_MOVE_ERRORR);
             }
             return false;
         }
     }
     return true;
 }