【V5計画】CAFEMILK SHOPPING CART V5 (113レス)
【V5計画】CAFEMILK SHOPPING CART V5 http://medaka.5ch.io/test/read.cgi/php/1246680239/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
20: nobodyさん [] 2009/07/20(月) 11:38:57 ID:dO1TPAcY 2009.07.20 V5.1.4がリリースされました。 http://medaka.5ch.io/test/read.cgi/php/1246680239/20
21: nobodyさん [sage] 2009/07/20(月) 18:49:41 ID:??? ■ 簡易導入法 1.だうんろーど 本体 http://cafemilk.milkcafe.to/v5get.html AJAXZIP2 http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html 2.ふぁいる統合作業 設置ディレクトリ作成 設置ディレクトリに「cgi-bin」内ファイルをコピー 設置ディレクトリに「統合ファイル」内ファイルをコピー 設置ディレクトリにディレクトリ「shop」を作成 ディレクトリ「shop」に「public_html」内ファイルをコピー ディレクトリ「ajaxzip2」にAJAXZIP2をコピー http://medaka.5ch.io/test/read.cgi/php/1246680239/21
22: nobodyさん [sage] 2009/07/20(月) 18:53:27 ID:??? 3.せってい config_common.plを開いて以下の値を編集 $config->{path}{cgi_to_html} = 'http://example.jp/shop/'; # home/shop URLパス $config->{path}{cgi_to_file} = './shop/'; # home/shop # home/shop サーバ内相対パス $config->{url}{root} = 'http://example.jp/'; # home URLパス $config->{url}{sslroot} = 'https://example.jp/'; # home URLパス $config->{url}{imageroot} = 'https://example.jp/shop/'; # home/shop URLパス main.cgiとrf.cgiのPERLのパスを書き換える 4.どうさかくにん https://example.jp/main.cgiにアクセス 起動したらOK http://medaka.5ch.io/test/read.cgi/php/1246680239/22
23: nobodyさん [sage] 2009/07/20(月) 18:57:26 ID:??? 5.あかうんとさくせい main.cgi?execute=admin_gateにアクセス administer : administer でログイン 新規に管理者管理権限を持つアカウントを作成 ログアウト 新しいアカウントでログイン administerアカウントを削除 6.ちゅういてん バージョンアップの際にすべてのファイルを上書きすると 設定が初期値に戻り、 商品や会員などのデータベースが消えてしまうので注意。 http://medaka.5ch.io/test/read.cgi/php/1246680239/23
24: nobodyさん [sage] 2009/07/20(月) 19:03:16 ID:??? 7.そのた スキン制作やカスタマイズ時にはかならず以下の作業を行う。(重要) main.cgiのuse CGI::Carp qw(fatalsToBrowser);のコメントをはずす。 config_basic.plの以下の設定値を全部1にする。 $config->{sendmail}{notice}{error} = '0'; # 0 ONLY $config->{sendmail}{notice}{alert} = '0'; # 0 ONLY $config->{test}{show_log_error} = '0'; # 0 ONLY $config->{test}{show_log_alert} = '0'; # 0 ONLY これで各種エラーの報告が出るようになります。 ただし運用時には戻しておくこと。 http://medaka.5ch.io/test/read.cgi/php/1246680239/24
25: nobodyさん [sage] 2009/07/20(月) 20:06:41 ID:??? >>22 >$config->{url}{sslroot} = 'https://example.jp/'; # home URLパス SSL対応なの?安いのが売りなら共有SSLも当然対応? http://medaka.5ch.io/test/read.cgi/php/1246680239/25
26: nobodyさん [sage] 2009/07/22(水) 21:12:47 ID:??? ■ コントローラ (main.cgi) (MVCのCをmain.cgiが担う) フォーム等のリクエストはすべてmain.cgi宛てとなる [main.cgiの仕事] クッキーの読み込み セッションの処理 自己診断 内容に不正があれば排除等の処理 リクエストの取得 自己診断 内容に不正があれば排除等の処理 ログイン・ログアウト要求があれば処理 リクエストにしたがってexecuteを発行 execute(execute型プラグイン)へexecuteの自己診断を依頼 (execute実行1/3) (executeはMVCのM(モデル)) 自己診断が問題を発見した場合はその内容にしたがってexecuteの差し替えを行う executeへ実行を依頼 (executeの実行2/3) データベースなどいろいろ処理 テンプレートエンジンへウェブ出力作成を依頼 (テンプレートエンジンMVCのV(ビュー)) pulugin(pulugin型プラグイン)実行要求があればプラグインを実行 puluginもデータベースなどいろいろ処理 executeへ終了処理を依頼 (executeの実行3/3) クッキーの発行 ウェブ出力の発行 終了 コントローラの作りはなかなかシンプル やたらと自己診断を行う →不正内容と判断されたものはだいたい消去される →独自に入力欄などを作成してもその入力内容が消されたりするので注意 →消されるリクエストは設定にて許可を行う必要がある http://medaka.5ch.io/test/read.cgi/php/1246680239/26
27: nobodyさん [sage] 2009/07/23(木) 03:01:50 ID:??? ■ テンプレートエンジン 基本的に3種類 HTMLテンプレートエンジン コントローラ (cafemilk_template_html.pl) 本体 (cafemilk_skin_html.pl) タグ処理 (cafemilk_tag_html.pl) MAILテンプレートエンジン 本体 (cafemilk_skin_mail.pl) タグ処理 (cafemilk_tag_mail.pl) WORDLIST ワードリスト取得 http://medaka.5ch.io/test/read.cgi/php/1246680239/27
28: nobodyさん [sage] 2009/07/23(木) 03:05:07 ID:??? コントローラ テンプレートエンジン本体の各機能を一括して操作する 基本的に、main.cgi経由でのexecuteからの要求を受けて、 スキンを取得しろとかプラグインを実行しろとかタグを置き換えよとか本体に言う コントローラは直接WORDLISTにアクセスできない →executeかpluginを経由すればOK 本体 要求に応えてスキンを取得する 要求に応えてプラグインを実行する 要求に応えてタグを置換する execute内部やplugin内部でのテンプレート処理ではコントローラを呼び出さず、内蔵する つまりexecuteやpluginは本体を直接操作している この辺の関係(メール送信はexecute内部から行われる)でMAILにコントローラは存在しない タグ処理 本体の要求にしたがって各種独自タグの値を返す WORDLIST 単語や文章のリストを取得 たとえば日付表示に使う「年」「月」「日」など テンプレートエンジンの動作は難解 テンプレートエンジンがpluginを呼び出す→pluginはコントローラを内蔵する →つまりテンプレートエンジンは入れ子状あるいはツリー状に繰り返し実行される http://medaka.5ch.io/test/read.cgi/php/1246680239/28
29: nobodyさん [] 2009/07/23(木) 13:45:14 ID:U4ZiCbfG ■ スキン テンプレートエンジンは難解だがスキン側から見ると単純 HTMLに独自タグを使う 部品化されている 基本的に2種類 プラグインタグ pluginを呼び出すタグ →pluginはスキンにて呼び出しを要求するという仕様 テンプレートタグ 各種要素を出力する それぞれに高層中層低層がある <######hoge######> 高層プラグインタグ <#####hoge#####> 中層プラグインタグ <####hoge####> 低層プラグインタグ <###hoge###> 高層テンプレートタグ <##hoge##> 中層テンプレートタグ <#hoge#> 低層テンプレートタグ #が多いほど実行優先順位が高い →必要に応じて優先順位を割り当てられる http://medaka.5ch.io/test/read.cgi/php/1246680239/29
30: nobodyさん [] 2009/07/23(木) 13:47:17 ID:U4ZiCbfG わかりやすく言うと、 プラグインタグはスキン部品呼び出し(そのうえプログラムを実行できる→自由度が高い) テンプレートタグは要素(文字列など)呼び出し(スキン部品の呼び出しやプログラムの実行はできない) どちらにもオプションをつけることができる <####hoge:a:b:e:c####> foreachなどの命令文は一切ない →そのへんはexecuteかpluginにやらせる http://medaka.5ch.io/test/read.cgi/php/1246680239/30
31: nobodyさん [] 2009/07/25(土) 21:54:01 ID:EVQjpFBn >>1です ZENでショップにトロイを仕込まれるトラブルが発生してます。 CSRF脆弱性を突いてアップロードされたそうです。 自動ツールで攻撃されているようで、被害は多数に及んでいるはずです。 大半のショップは問題に気づいていないでしょう。恐ろしいことです。 ttp://zen-cart.jp/bbs/viewtopic.php?f=6&t=4609#p23220 CAFEMILKでは CSRF脆弱性は独自の「実行リクエスト保護多重セッション」によって防止 されている アップロードされたファイルのMIMEタイプを読んで決められたMIMEタイプ のみのアップロードを受け付けている アップロードはアップロードが許可されたディレクトリにしか実施できない アップロードしたファイルには設定で決められた拡張子しかつかない などの入念な対策が講じられています。 http://medaka.5ch.io/test/read.cgi/php/1246680239/31
32: nobodyさん [] 2009/07/25(土) 21:57:17 ID:PUE3LKWG CAFEMILKは、既存の脆弱性についてはすべてについて入念に対応したと 公言しています。 その内容は上に書いたとおりで、なかなかよくやっていると思います。 http://medaka.5ch.io/test/read.cgi/php/1246680239/32
33: nobodyさん [] 2009/07/25(土) 21:59:54 ID:BwZLCaSC すいません 既存の > 既知の でした。 http://medaka.5ch.io/test/read.cgi/php/1246680239/33
34: nobodyさん [sage] 2009/07/25(土) 22:03:07 ID:??? >>1 って作者? http://medaka.5ch.io/test/read.cgi/php/1246680239/34
35: nobodyさん [sage] 2009/07/27(月) 01:31:14 ID:??? CSRFなんて昔は気にされていなかったものだしあとから対応ってことが難しいからここのような後発の製品に強みがあるんだな 一般にショッピングカートと名がついているものの大半はCSRFなんか放置してるだろうに いまCSRFに対する完全な防御を謳っている製品がどんだけあるだろうか http://medaka.5ch.io/test/read.cgi/php/1246680239/35
36: nobodyさん [sage] 2009/07/27(月) 12:43:16 ID:??? ■ サブルーチン(など)のルール サブルーチンの呼び出しは以下のようにして行うとルール化されている [呼び出す側] パッケージ名::サブルーチン名 ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, そのたの情報 }); [呼び出される側] sub サブルーチン名 { my $argument = shift; my $config = $argument->{config}; my $userdata = $argument->{userdata}; my $log_error = $argument->{log_error}; my $log_alert = $argument->{log_alert}; my $status = $argument->{status}; 上記のルールを守ることにより、設定や各種の重要な情報を常に保持することができる http://medaka.5ch.io/test/read.cgi/php/1246680239/36
37: nobodyさん [sage] 2009/07/27(月) 12:45:24 ID:??? オブジェクト方式についてもだいたい同様 [例] my $database = Cafemilk_database_log->connect ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', column_separator => ',', database_filename => 'database/item_news', database_separator => ',', record_stack => $config->{database}{session_stack}{item}{news}, }); $database->postscript(\%record); undef $database; マニュアルにもうすこし詳しい情報があるので参照。 http://medaka.5ch.io/test/read.cgi/php/1246680239/37
38: nobodyさん [sage] 2009/07/27(月) 12:47:23 ID:??? ルールの意味をわかりやすく説明するサンプルコード my $userdata = {}; $userdata->{test} = 1; ← ? 格納した情報を require 'test.pl' Test::testsub ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, }); print $userdata->{test}; ← 出力は 2 ? サブルーチン内で書き換えた内容がちゃんと保持されている exit; sub test { my $argument = shift; my $config = $argument->{config}; my $userdata = $argument->{userdata}; ← ? サブルーチン内のローカル変数に格納して my $log_error = $argument->{log_error}; my $log_alert = $argument->{log_alert}; my $status = $argument->{status}; $userdata->{test} = 2; ← ? 書き換えているが } http://medaka.5ch.io/test/read.cgi/php/1246680239/38
39: nobodyさん [sage] 2009/07/27(月) 12:57:27 ID:??? ■ CGIモジュール モジュールCGI.pmは以下のようにして呼び出される $userdata->{cgi_query} = CGI->new(); こうすることでCGIオブジェクトはdieしなくなるので、どこからでも呼び出して利用できる (CGI.pmはフォーム関連の環境変数を消してしまうので2度のuseができない) [例] my @param_list = $userdata->{cgi_query}->param(); http://medaka.5ch.io/test/read.cgi/php/1246680239/39
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 74 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.042s