[Svn-src-all:1492] [version-2_5-dev 20384] #812(トランザクションIDの自動生成/自動検証)
nanasess
admin @ mail.ec-cube.net
2011年 2月 24日 (木) 18:40:55 JST
Subversion committed to /home/svn/open 20384
http://svn.ec-cube.net/open_trac/changeset/20384
┌────────────────────────────┐
│更新者 : nanasess │
│更新日時: 2011-02-24 18:40:55 +0900 (木, 24 2月 2011)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#812(トランザクションIDの自動生成/自動検証)
* トークンの生成タイミングを POST ごとから, 1セッションごとに修正
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_5-dev/data/class/SC_Customer.php
U branches/version-2_5-dev/data/class/SC_Session.php
U branches/version-2_5-dev/data/class/helper/SC_Helper_Session.php
U branches/version-2_5-dev/data/class/pages/LC_Page.php
U branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_FileManager.php
U branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php
U branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer.php
U branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer_SearchCustomer.php
U branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php
U branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php
U branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
変更: branches/version-2_5-dev/data/class/SC_Customer.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_Customer.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/SC_Customer.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -211,6 +211,8 @@
function EndSession() {
// $_SESSION['customer']の解放
unset($_SESSION['customer']);
+ // トランザクショントークンの破棄
+ SC_Helper_Session_Ex::destroyToken();
$objSiteSess = new SC_SiteSession();
$objSiteSess->unsetUniqId();
// ログに記録する
変更: branches/version-2_5-dev/data/class/SC_Session.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_Session.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/SC_Session.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -120,6 +120,8 @@
unset($_SESSION['authority']);
unset($_SESSION['member_id']);
unset($_SESSION['uniqid']);
+ // トランザクショントークンを破棄
+ SC_Helper_Session_Ex::destroyToken();
// ログに記録する
GC_Utils_Ex::gfPrintLog("logout : user=".$this->login_id." auth=".$this->authority." sid=".$this->sid);
}
変更: branches/version-2_5-dev/data/class/helper/SC_Helper_Session.php
===================================================================
--- branches/version-2_5-dev/data/class/helper/SC_Helper_Session.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_Session.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -170,15 +170,22 @@
/**
* トランザクショントークンの妥当性をチェックする.
*
- * 前画面で生成されたトランザクショントークンの妥当性をチェックする.
+ * 生成されたトランザクショントークンの妥当性をチェックする.
* この関数を使用するためには, 前画面のページクラスで LC_Page::getToken()
* を呼んでおく必要がある.
*
+ * トランザクショントークンは, SC_Helper_Session::getToken() が呼ばれた際に
+ * 生成される.
+ * 引数 $is_unset が false の場合は, トークンの妥当性検証が不正な場合か,
+ * セッションが破棄されるまで, トークンを保持する.
+ * 引数 $is_unset が true の場合は, 妥当性検証後に破棄される.
+ *
* @access protected
- * @param boolean $is_unset TODO: nanasessさんが作り変えているらしいですが暫定対応で
+ * @param boolean $is_unset 妥当性検証後, トークンを unset する場合 true;
+ * デフォルト値は false
* @return boolean トランザクショントークンが有効な場合 true
*/
- function isValidToken($is_unset = true) {
+ function isValidToken($is_unset = false) {
$checkToken = "";
@@ -194,16 +201,24 @@
$ret = false;
// token の妥当性チェック
if ($checkToken === $_SESSION[TRANSACTION_ID_NAME]) {
-
$ret = true;
}
- if ($is_unset) {
- unset($_SESSION[TRANSACTION_ID_NAME]);
+ if ($is_unset || $ret === false) {
+ SC_Helper_Session_Ex::destroyToken();
}
return $ret;
}
/**
+ * トランザクショントークンを破棄する.
+ *
+ * @return void
+ */
+ function destroyToken() {
+ unset($_SESSION[TRANSACTION_ID_NAME]);
+ }
+
+ /**
* 管理画面の認証を行う.
*
* mtb_auth_excludes へ登録されたページは, 認証を除外する.
変更: branches/version-2_5-dev/data/class/pages/LC_Page.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/LC_Page.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/LC_Page.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -330,7 +330,7 @@
/**
* POST アクセスの妥当性を検証する.
*
- * 前画面で生成されたトランザクショントークンの妥当性を検証し,
+ * 生成されたトランザクショントークンの妥当性を検証し,
* 不正な場合はエラー画面へ遷移する.
*
* この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
@@ -344,7 +344,7 @@
*/
function doValidToken($is_admin = false) {
if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken()) {
+ if (!SC_Helper_Session_Ex::isValidToken(false)) {
if ($is_admin) {
SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
} else {
変更: branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_FileManager.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_FileManager.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_FileManager.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -206,19 +206,6 @@
}
/**
- * トランザクショントークンを unset しないようオーバーライド.
- *
- * @return void
- */
- function doValidToken() {
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken(false)) {
- SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
- }
- }
- }
-
- /**
* 初期化を行う.
*
* @param SC_FormParam $objFormParam SC_FormParamインスタンス
変更: branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -127,19 +127,6 @@
parent::destroy();
}
- /**
- * トランザクショントークンを unset しないようオーバーライド.
- *
- * @return void
- */
- function doValidToken() {
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken(false)) {
- // SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
- }
- }
- }
-
/**
* パラメータの初期化を行う
* @param Object $objFormParam
変更: branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -141,19 +141,6 @@
}
/**
- * トランザクショントークンを unset しないようオーバーライド.
- *
- * @return void
- */
- function doValidToken() {
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken(false)) {
- SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
- }
- }
- }
-
- /**
* パラメーター情報の初期化
*
* @param array $objFormParam フォームパラメータークラス
変更: branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer_SearchCustomer.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer_SearchCustomer.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer_SearchCustomer.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -91,19 +91,6 @@
}
/**
- * トランザクショントークンを unset しないようオーバーライド.
- *
- * @return void
- */
- function doValidToken() {
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken(false)) {
- SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
- }
- }
- }
-
- /**
* デストラクタ.
*
* @return void
変更: branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -127,19 +127,6 @@
}
/**
- * トランザクショントークンを unset しないようオーバーライド.
- *
- * @return void
- */
- function doValidToken() {
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken(false)) {
- SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
- }
- }
- }
-
- /**
*
* 商品取得
* @param array $arrProduct_id
変更: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -97,19 +97,6 @@
parent::destroy();
}
- /**
- * トランザクショントークンを unset しないようオーバーライド.
- *
- * @return void
- */
- function doValidToken() {
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken(false)) {
- SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
- }
- }
- }
-
/* 取得文字列の変換 */
function lfConvertParam() {
/*
変更: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php 2011-02-24 09:35:12 UTC (rev 20383)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php 2011-02-24 09:40:55 UTC (rev 20384)
@@ -227,19 +227,6 @@
}
/**
- * トランザクショントークンを unset しないようオーバーライド.
- *
- * @return void
- */
- function doValidToken() {
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- if (!SC_Helper_Session_Ex::isValidToken(false)) {
- SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
- }
- }
- }
-
- /**
* パラメータの初期化を行い, 初期値を設定する.
*
* @param SC_FormParam $objFormParam SC_FormParam インスタンス
Svn-src-all メーリングリストの案内