No タイトル ステータス 重要度 担当 完了予定日 更新日時 記事数
26 confirm画面を追加 完了 最低 未定 2008-02-29 10:55 2008-02-13 22:00 8
せっかくcrudがあるので、confirm画面を追加できるようにして欲しいっす。
動きだけ再現したソースを添付します。

バックボタン無いけど・・・
添付ファイル:
confirm.zip
良く考えたら作れるし、いいんじゃないかと思ったす。
http://fixdap.com/p/rhaco/5868/が出来れば無問題っすー。
confirm画面というものは、利便性の点だけではなく、CSRF対策としても必要ではないかなと思うわけです。
sihgeponさんの手法は動作上は問題ないですが、CSRF対策にはなってない気がします。

概説:何らかのスクリプト等から、confirm=yesを含んだPOSTデータを該当URLに直接POSTすることにより、ワンステップでレコードをinsertできてしまう。
参考:http://takagi-hiromitsu.jp/diary/20050427.html

まあ、データが抜かれるわけではないので致命的ではありませんが優先度最低で一応。
  • riaf
  • 2008-02-02 16:01
CSRF対策は組み込みで一応ありますよね。
Rhaco::constant("HTML_CSRF_FILTER", true);

コード見てないので、有効かどうかはわかりませんが:-P
csrf対策は組込みであるのでインターフェースとしてのconfirmを考えてたんです。
riafさんの返信にもあるようにRhaco::constant("HTML_CSRF_FILTER", true);とすると出力時にtokenを出してくれるようです。
confirm画面入れてもちゃんと出してくれました。
rhacoかっこいー!

了解しますた!
revision 2699


<?php
include("__init__.php");
Rhaco::import("generic.Urls");
Rhaco::import("model.Product");

$redirect = Rhaco::page("index");
$object = new Product();

$parser = Urls::parser(array(
"^create"=>array("method"=>"confirmedCreate","args"=>array($object,$redirect)),
"^$"=>array("method"=>"read","args"=>$object),
"^update/([\d]+)"=>array("method"=>"confirmedUpdate","args"=>array($object,$redirect)),
"^delete/([\d]+)"=>array("method"=>"drop","args"=>array($object,$redirect)),
"^detail/([\d]+)"=>array("method"=>"detail","args"=>$object),
));
$parser->write();
?>


確認しました。ちゃんと動作しました。