メイン helper,component,script
hidden値=0の時の、Securityコンポーネントチェック | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| crays | 投稿日時: 2008-6-23 17:00 |
Baker スタート ![]() ![]() 登録日: 2008-5-7 居住地: 大阪 投稿: 20 |
hidden値=0の時の、Securityコンポーネントチェック こんにちわ。
現在、RC1にて製造を行っています。 とあるフォームにて以下のようなhidden値を出力しました。 このフォームはSecurityコンポーネントにおけるチェックを行います。 つまり、以下のようなフォームでPOSTされます。 しかし、このPOSTリクエストはセキュリティーチェックエラーとなります。 原因を調べていくと、フォーム内data[__Token][fields]値とセキュリティコンポーネントが生成したfields値が異なっていた為と判明しました。 両者のfields値は項目のhash値なのですが、フォーム出力時のhash化対象配列が なのに対し、セキュリティコンポーネントでは だったからです。 (hiddenに0以外の値を入れると問題ありません) みなさん、hiddenに0は入れないのでしょうか? それとも、私の使い方に間違いがあるのでしょうか? 宜しくお願いします。 |
| pikapika | 投稿日時: 2008-7-7 9:25 |
Baker ユーザ ![]() ![]() 登録日: 2008-4-20 居住地: 投稿: 33 |
Re: hidden値=0の時の、Securityコンポーネントチェック 当方も同じところでつまっております。
その後、解決方法は見いだせましたでしょうか? よろしくお願いします。 |
| crays | 投稿日時: 2008-7-7 10:15 |
Baker スタート ![]() ![]() 登録日: 2008-5-7 居住地: 大阪 投稿: 20 |
Re: hidden値=0の時の、Securityコンポーネントチェック 改善策が見当たらなかった為、以下のようにしました。
参考までに手法を載せておきます。 ・hiddenに入れるはずの値一式をSessionに保持。 ・Sessionに保持した値のhash値をhiddenに出力。 ・FormからのPOSTリクエストを受け取るコントローラでSessionに保持した値のHash値とPOSTリクエストのHash値が一致するか判定。 ・一致したら、Sessionに存在する値を使用していく。 ご参考になればと思います。 また、別の手法を考えられて方がいましたら、投稿願えたらと思います。 |
| shun | 投稿日時: 2008-7-7 22:46 |
Cake 職人 ![]() ![]() 登録日: 2006-7-14 居住地: 東京、日本 投稿: 1007 |
Re: hidden値=0の時の、Securityコンポーネントチェック こちらでも確認できました。
チケットか、テストケースを書いたほうがよいと思いますが、書けますか? views/add.ctp posts_controller.php |
| shun | 投稿日時: 2008-7-7 23:12 |
Cake 職人 ![]() ![]() 登録日: 2006-7-14 居住地: 東京、日本 投稿: 1007 |
Re: hidden値=0の時の、Securityコンポーネントチェック Securityコンポーネントの __validatePost() と、 Formヘルパーの secure() を比較すると答えが出そうです。
(また明日。) |
| crays | 投稿日時: 2008-7-8 0:10 |
Baker スタート ![]() ![]() 登録日: 2008-5-7 居住地: 大阪 投稿: 20 |
Re: hidden値=0の時の、Securityコンポーネントチェック shun様、返答をいただきありがとう御座います。
早速ではありましたが、本家のtracにてBUGチケットを切ってきました。 英語は苦手で、本当ならshun様にお願いしようかとも思いましたが、「何事も勉強」の気持ちで登録してきました。 https://trac.cakephp.org/ticket/5061#preview |
| shun | 投稿日時: 2008-7-8 17:05 |
Cake 職人 ![]() ![]() 登録日: 2006-7-14 居住地: 東京、日本 投稿: 1007 |
Re: hidden値=0の時の、Securityコンポーネントチェック Ticketありがとうございました。
とりあえずは、value="0" になるときには、value="" としてしまう、などで逃げ切れるでしょうか。 |
| pikapika | 投稿日時: 2008-7-24 14:58 |
Baker ユーザ ![]() ![]() 登録日: 2008-4-20 居住地: 投稿: 33 |
Re: hidden値=0の時の、Securityコンポーネントチェック 複数選択可能なチェックボックスやリストメニューで、なにも選択しなかった場合も、同様の現象が起こりました。
やはり原因は $formと$checkが一致しないことのようです。 セキュリティコンポーネントまわりは、まだまだバグが多いですね・・・ |
| dododo | 投稿日時: 2008-7-26 22:52 |
Baker スタート ![]() ![]() 登録日: 2008-5-14 居住地: 投稿: 13 |
Re: hidden値=0の時の、Securityコンポーネントチェック 私の場合は、次のような複数チェックボックスで、何かひとつでも選択するとエラーになってしまいました。
<input type="hidden" name="data[_User][prefecture]" value="" /> <div class="checkbox"><input type="checkbox" name="data[User][prefecture][]" value="1" id="UserPrefecture1" /><label for="UserPrefecture1">北海道</label></div> <div class="checkbox"><input type="checkbox" name="data[User][prefecture][]" value="2" id="UserPrefecture2" /><label for="UserPrefecture2">青森県</label></div> <div class="checkbox"><input type="checkbox" name="data[User][prefecture][]" value="3" id="UserPrefecture3" /><label for="UserPrefecture3">岩手県</label></div> .... 最新版(公式リリースでない)でも同様でした。仕様なのでしょうか? 私には解決できません; shunさん、あとはお任せします・・・w |
| crays | 投稿日時: 2008-8-10 23:50 |
Baker スタート ![]() ![]() 登録日: 2008-5-7 居住地: 大阪 投稿: 20 |
Re: hidden値=0の時の、Securityコンポーネントチェック
|
| (1) 2 » | |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |




