【V5計画】CAFEMILK SHOPPING CART V5 (113レス)
上下前次1-新
21: 2009/07/20(月)18:49 ID:??? AAS
■ 簡易導入法
1.だうんろーど
本体
外部リンク[html]:cafemilk.milkcafe.to
AJAXZIP2
外部リンク[html]:www.kawa.net
2.ふぁいる統合作業
設置ディレクトリ作成
設置ディレクトリに「cgi-bin」内ファイルをコピー
設置ディレクトリに「統合ファイル」内ファイルをコピー
省3
22(1): 2009/07/20(月)18:53 ID:??? AAS
3.せってい
config_common.plを開いて以下の値を編集
$config->{path}{cgi_to_html} = '外部リンク:example.jp # home/shop URLパス
$config->{path}{cgi_to_file} = './shop/'; # home/shop # home/shop サーバ内相対パス
$config->{url}{root} = '外部リンク:example.jp # home URLパス
$config->{url}{sslroot} = '外部リンク:example.jp # home URLパス
$config->{url}{imageroot} = '外部リンク:example.jp # home/shop URLパス
main.cgiとrf.cgiのPERLのパスを書き換える
4.どうさかくにん
外部リンク[cgi]:example.jpにアクセス
省1
23: 2009/07/20(月)18:57 ID:??? AAS
5.あかうんとさくせい
main.cgi?execute=admin_gateにアクセス
administer : administer でログイン
新規に管理者管理権限を持つアカウントを作成
ログアウト
新しいアカウントでログイン
administerアカウントを削除
6.ちゅういてん
バージョンアップの際にすべてのファイルを上書きすると
設定が初期値に戻り、
省1
24: 2009/07/20(月)19:03 ID:??? AAS
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
これで各種エラーの報告が出るようになります。
ただし運用時には戻しておくこと。
25: 2009/07/20(月)20:06 ID:??? AAS
>>22
>$config->{url}{sslroot} = '外部リンク:example.jp # home URLパス
SSL対応なの?安いのが売りなら共有SSLも当然対応?
26: 2009/07/22(水)21:12 ID:??? AAS
■ コントローラ (main.cgi)
(MVCのCをmain.cgiが担う)
フォーム等のリクエストはすべてmain.cgi宛てとなる
[main.cgiの仕事]
クッキーの読み込み
セッションの処理
自己診断 内容に不正があれば排除等の処理
リクエストの取得
自己診断 内容に不正があれば排除等の処理
ログイン・ログアウト要求があれば処理
省17
27: 2009/07/23(木)03:01 ID:??? AAS
■ テンプレートエンジン
基本的に3種類
HTMLテンプレートエンジン
コントローラ (cafemilk_template_html.pl)
本体 (cafemilk_skin_html.pl)
タグ処理 (cafemilk_tag_html.pl)
MAILテンプレートエンジン
本体 (cafemilk_skin_mail.pl)
タグ処理 (cafemilk_tag_mail.pl)
WORDLIST
省1
28: 2009/07/23(木)03:05 ID:??? AAS
コントローラ
テンプレートエンジン本体の各機能を一括して操作する
基本的に、main.cgi経由でのexecuteからの要求を受けて、
スキンを取得しろとかプラグインを実行しろとかタグを置き換えよとか本体に言う
コントローラは直接WORDLISTにアクセスできない
→executeかpluginを経由すればOK
本体
要求に応えてスキンを取得する
要求に応えてプラグインを実行する
要求に応えてタグを置換する
省11
29: 2009/07/23(木)13:45 ID:U4ZiCbfG(1/2) AAS
■ スキン
テンプレートエンジンは難解だがスキン側から見ると単純
HTMLに独自タグを使う
部品化されている
基本的に2種類
プラグインタグ
pluginを呼び出すタグ
→pluginはスキンにて呼び出しを要求するという仕様
テンプレートタグ
各種要素を出力する
省9
30: 2009/07/23(木)13:47 ID:U4ZiCbfG(2/2) AAS
わかりやすく言うと、
プラグインタグはスキン部品呼び出し(そのうえプログラムを実行できる→自由度が高い)
テンプレートタグは要素(文字列など)呼び出し(スキン部品の呼び出しやプログラムの実行はできない)
どちらにもオプションをつけることができる
<####hoge:a:b:e:c####>
foreachなどの命令文は一切ない
→そのへんはexecuteかpluginにやらせる
31: 2009/07/25(土)21:54 ID:EVQjpFBn(1) AAS
>>1です
ZENでショップにトロイを仕込まれるトラブルが発生してます。
CSRF脆弱性を突いてアップロードされたそうです。
自動ツールで攻撃されているようで、被害は多数に及んでいるはずです。
大半のショップは問題に気づいていないでしょう。恐ろしいことです。
外部リンク[php]:zen-cart.jp
CAFEMILKでは
CSRF脆弱性は独自の「実行リクエスト保護多重セッション」によって防止
されている
アップロードされたファイルのMIMEタイプを読んで決められたMIMEタイプ
省4
32: 2009/07/25(土)21:57 ID:PUE3LKWG(1) AAS
CAFEMILKは、既存の脆弱性についてはすべてについて入念に対応したと
公言しています。
その内容は上に書いたとおりで、なかなかよくやっていると思います。
33: 2009/07/25(土)21:59 ID:BwZLCaSC(1) AAS
すいません
既存の > 既知の
でした。
34: 2009/07/25(土)22:03 ID:??? AAS
>>1 って作者?
35: 2009/07/27(月)01:31 ID:??? AAS
CSRFなんて昔は気にされていなかったものだしあとから対応ってことが難しいからここのような後発の製品に強みがあるんだな
一般にショッピングカートと名がついているものの大半はCSRFなんか放置してるだろうに
いまCSRFに対する完全な防御を謳っている製品がどんだけあるだろうか
36: 2009/07/27(月)12:43 ID:??? AAS
■ サブルーチン(など)のルール
サブルーチンの呼び出しは以下のようにして行うとルール化されている
[呼び出す側]
パッケージ名::サブルーチン名
({
config => $config,
userdata => $userdata,
log_error => $log_error,
log_alert => $log_alert,
status => $status,
省12
37: 2009/07/27(月)12:45 ID:??? AAS
オブジェクト方式についてもだいたい同様
[例]
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',
省8
38(1): 2009/07/27(月)12:47 ID:??? AAS
ルールの意味をわかりやすく説明するサンプルコード
my $userdata = {};
$userdata->{test} = 1; ← ? 格納した情報を
require 'test.pl'
Test::testsub
({
config => $config,
userdata => $userdata,
log_error => $log_error,
log_alert => $log_alert,
省14
39(1): 2009/07/27(月)12:57 ID:??? AAS
■ CGIモジュール
モジュールCGI.pmは以下のようにして呼び出される
$userdata->{cgi_query} = CGI->new();
こうすることでCGIオブジェクトはdieしなくなるので、どこからでも呼び出して利用できる
(CGI.pmはフォーム関連の環境変数を消してしまうので2度のuseができない)
[例]
my @param_list = $userdata->{cgi_query}->param();
40: 2009/07/27(月)13:01 ID:??? AAS
>>38の訂正 ちょっとだけ
require 'test.pl' > require 'test.pl';
sub test > sub testsub
上下前次1-新書関写板覧索設栞歴
あと 73 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s