【V5計画】CAFEMILK SHOPPING CART V5 (113レス)
上下前次1-新
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
41: 2009/07/27(月)13:04 ID:??? AAS
>>39 ちょっとだけ
2度のuse > 2度のnew
42: 2009/07/27(月)20:55 ID:??? AAS
このスレの書き込み、なにがしたいんだ?
43: 2009/07/28(火)00:49 ID:??? AAS
誰かがプログラム解析して情報載せてるんだろ
どこかwikiでも紹介したらそちらに行くんじゃ?
44: 2009/07/28(火)01:10 ID:??? AAS
ここはWEBプログラミング板だったよな
45: 2009/07/28(火)18:06 ID:??? AAS
■ データベース
独自のモジュールを使う
CSV形式
エクセルに対応してるらしい
カラム名を指定して操作する
2種類
通常
商品や会員などを扱う
ログ
レコードの操作があまりできない 読込と追記専門
省2
46: 2009/07/28(火)18:08 ID:??? AAS
基本的な使い方
my $database = Cafemilk_database_basic->connect ← オブジェクト方式connectで呼び出す
({
config => $config,
userdata => $userdata,
log_error => $log_error,
log_alert => $log_alert,
status => $status,
column_filename => 'database/item_column_list.csv', ← カラム名の情報
column_separator => ',',
省9
47: 2009/07/28(火)18:15 ID:??? AAS
レコードのマッチングをしたいとき
$database->get_record_all();
$database->match_database
({
column_name => 'カラム名',
match_word => '値',
});
my @lines = $database->get_extract_database();
レコードのサーチをしたいとき
$database->get_record_all();
省13
48: 2009/07/28(火)18:24 ID:??? AAS
レコードのソートをしたいとき
$database->get_record_all();
$database->sort_database
({
column_name => 'カラム名',
reverse_mode => '0', ← reverseしない
sort_mode => 'number_quick', ← number_quickかcharacter_quick
});
my @lines = $database->get_extract_database();
特定のレコードを差し替えたいとき
省7
49: 2009/07/28(火)18:28 ID:??? AAS
特定のレコードを削除したいとき
$database->delete_record
({
extract_column_name => 'カラム名', ← ターゲットのレコードを特定するために指定
extract_column_value => '値', ← ターゲットのレコードを特定するために指定
});
→ 削除は予約になるのでこのあとoverwriteが必要
操作したデータベースを格納(予約)
$database->set_extract_database
({
省8
50: 2009/07/29(水)13:10 ID:??? AAS
特定のレコード(1件)の抽出
my $extract_database = $database->extract_last_record
({
extract_column_name => 'カラム名',
extract_column_value => '値',
});
→ 通常では最初の該当レコードが、ログでは最後の該当レコードが帰ってくる
レコードの内容の取得
→レコードの内容をいろいろ操作するために必要
my @lines = $database->get_extract_database();
省17
51: 2009/07/29(水)13:14 ID:??? AAS
その他
get_stack ← レコードの数を返す
double_sort_database ← ダブルソート
set_write_forbid ← (何か問題があったときなど)書込禁止命令
merge_database ← 重複のあるログの統合
(ry
上下前次1-新書関写板覧索設栞歴
あと 62 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s