EC-CUBEのカートを外部から操作してみる。

EC-CUBEのカートを外部から操作してみる。

EC-CUBEのカート情報をMySQLを修正する事で、カートに商品を追加する事は可能か?

ソース解析の結果
1,カート情報は$_SESSION[‘cart’]とセッション変数で保持していている。
2,途中で中断されても再現できるように、カート処理の途中でdtb_order_tempテーブルのsessionフィールドにセッション情報を保存してある。
(ブラウザにセッション情報が残っている内は、カート処理の途中から再開できる)
URLにも最後にtransactionid=24b0b76b9085df3f64bc82d6aca20d588d7a93f2のようなsha1(128bitトークン)が保持されている。

なので、セッション情報を切れた
http://sample.co.jp/eccube/html/cart/
だとセッション情報が残っていないと、カートの中身は空

トランザクションIDを持ったURLを別ブラウザ
http://sample.co.jp/eccube/html/shopping/confirm.php?transactionid=24b0b76b9085df3f64bc82d6aca20d588d7a93f2
不正なページ移動です。

端的に言うと、$_SESSION[cart]にカート情報を詰め込まないとダメなのですが、当たり前ですが、外部サーバから$_SESSIONは修正出来ない。
なら、カート処理全体のセッションチェックを外してみるか…。
SC_SiteSession.phpのisPrePage()を、必ずtrueで返すように修正したけど、エラーが出なくなっただけでカートの中身は空のまま。

う~ん、今のセッションでカート管理している作りだと、外部からDBを修正してカートの中身を操作するのは無理っぽい。