【PHP】フレームワーク CakePHP 2ホール目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/11/14(水) 02:50:28ID:???http://www.cakephp.org/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0402nobodyさん
2008/02/15(金) 18:16:11ID:???セッション多様は開発者が楽するためのもので
サイト運営者、利用者にとってセキュリティリスクでしかない
0403nobodyさん
2008/02/15(金) 18:24:00ID:???0404nobodyさん
2008/02/15(金) 18:49:34ID:I3wnpJfD0405nobodyさん
2008/02/15(金) 19:08:46ID:???リクエストされたパラメータが改竄されていないかどうかをチェックするということか?
そんなことをするならばセッションにデータを格納したほうが効率が良いだろう。
悪意あるリクエストによってサーバセッションの中身を改竄するのは、
パラメータを書き換えるよりは困難だ。
他人のセッションを乗っ取ったり、MITM攻撃などでの手法はまた違う議論。
セッションを使おうが、パラメタを使おうが、適切な処理を行わなければ
どちらもセキュリティリスクになる。
どちらの方法も処理次第では脆弱になりうる。
逆に言えば、どちらの方法でも適切な処理を行えば十分安全になる。
ここでいう*十分安全*という定義はサービスの内容によって異なる。
0406nobodyさん
2008/02/15(金) 19:10:27ID:???具体的に指摘してやるからコード晒してくれ
0407nobodyさん
2008/02/15(金) 19:39:23ID:???他はログインID引き回すぐらいかな
ちなみにCAKEのデフォルト通りにIPでも(自動で)チェックしてるからドコモの人はさよならな俺のサイト
0408nobodyさん
2008/02/15(金) 20:04:49ID:???具体的に?
いや、だから、あるアクションでセッションにデータ入れて関連する他のアクションで参照するっていう、ほんとそのまんま。
コード書くまでもない。
0409nobodyさん
2008/02/15(金) 21:21:34ID:Q8bQtypzhiddenだと改ざんされてしまうし・・・。
けど、何でもかんでもセッションにってのは確かに気持ち悪いわな。
0410nobodyさん
2008/02/15(金) 21:43:28ID:???確認画面の時にバリデートして、DB登録直前にまたバリデートって面倒じゃない?(hidden値改竄の可能性があるから)
セッションだったら確認画面でセットしたデータがDB登録の時になって変わることがないからいいんだけど
0411nobodyさん
2008/02/15(金) 22:23:55ID:???個人的には、セッション変数を使うのが良いと思うが、
セッション変数は手軽に増やせるので、コードの質を低下させるのを気をつけたい。
例えば、index.phpですべてのリクエストを受けて、
$_SESSION['action']で場合分けみたいなコードを編集したことがあるけど、
$_SESSION['action']はsession_start()さえしておけば、コードのどこでも変更できるので、
きちんと規約を決めておかないと副作用で死ぬ。
フレームワークに期待するのは、そういう規約の部分なんだけど。
0412nobodyさん
2008/02/15(金) 22:28:43ID:???Javascriptからしか参照されないJSONで、
ユーザ固有のデータを出すときに、いちいちPOSTしなくて良い点。
遷移の上で孤立したアクションでユーザ固有のデータを使える。
0413nobodyさん
2008/02/15(金) 22:30:54ID:???たとえばセッションのサイズが1MBになったら、
データ読み込みに時間がかかるだろ?
↑
反論
ページ移動するたびに、
1MBものデータをhiddenでクライアントに転送し
それをまたサーバーに送信するようなことをしたら
もっとパフォーマンス悪いだろ?
0415nobodyさん
2008/02/15(金) 23:02:40ID:???0416nobodyさん
2008/02/15(金) 23:05:36ID:???セッション=ファイルなわけで、ファイルに保存するか、
データベースに保存するかの違いしかないんだが・・・
0417nobodyさん
2008/02/16(土) 00:07:09ID:???セッションIDのみでデータベースから読み出して処理するのがベストなのですか。
勉強になりました。ありがとうございます!
0418nobodyさん
2008/02/16(土) 00:20:43ID:???それで終わりだなw
0419nobodyさん
2008/02/16(土) 02:31:23ID:???0420nobodyさん
2008/02/16(土) 02:42:17ID:???なんかDBのデータ(ユーザデータとか)を全部セッションにぶちこむかどうかの議論と勘違いしてるのがいるな
途中経過のデータをセッションに入れるのはセキュリティ的によくないとか、セッションにはログインIDしか入れちゃいかんとか、その理由を述べろよ
0421nobodyさん
2008/02/16(土) 03:28:41ID:???0422nobodyさん
2008/02/16(土) 03:33:13ID:???無駄という意味か?w
0423nobodyさん
2008/02/16(土) 08:57:57ID:???大手を含め全員一致の答え、
ページ移動でもhidden内容を何でもかんでもセッションに詰め込むのは問題
・セッション変数の重複関係でバグ
・ページ移動中に他のサイト見に行ったりしたとき
・セッション変数が開放されないことによるバグ
・セッション切断による、変数の維持ができないバグ
0424nobodyさん
2008/02/16(土) 09:28:46ID:???バグが問題なだけ
>・ページ移動中に他のサイト見に行ったりしたとき
ページ移動中に他のサイト見に行ったりしたとき、
hiddenだと入力途中のデータ消えるバグ
> ・セッション変数が開放されないことによるバグ
バグが問題なだけ
> ・セッション切断による、変数の維持ができないバグ
セッション切断したのに、変数が維持されるバグ
0425nobodyさん
2008/02/16(土) 14:40:12ID:???しかも致命的バグを生む可能性が高いのはセッション
0426nobodyさん
2008/02/16(土) 14:50:25ID:???>セッションは必要最小限で使えというのは大手を含め全員一致の答え
なんで大手代表できるの?全員って?
ここの書き込み見るだけでもセッションでやってる人いるよね。
まぁせまい範囲だけど、知り合いとか知ってる会社とか、セッションで実装してるとこも多々ありますよ。
>セッション変数の重複・セッション変数が開放されない
これはバグじゃなくて、これに対処するコードを書かなきゃいけないっていうセッションのデメリット。
逆にhiddenのデメリットはhtmlに埋め込まなきゃいけない、改竄に対処するコードを書かなきゃいけないってことかな。
>・セッション切断による、変数の維持ができないバグ
セッション切断されたら変数の維持がどうのこうのじゃなく処理自体継続できない。ログアウトされるから。
ログインがないシステムだったらhiddenのほうがこの問題にはちゃんと対応できるね。
0427nobodyさん
2008/02/16(土) 14:53:57ID:???0429nobodyさん
2008/02/16(土) 15:05:46ID:???afterFindが呼び出されないバグがあるな。
behaviorで文字コード変更してたら文字化けした。
だれか報告してきてくれ。
find('count')はafterFindを呼び出す例を思いつかないが
呼び出したほうがいいのだろう? たぶん。
0430nobodyさん
2008/02/16(土) 15:07:33ID:w7he1Bjbいかに楽できるのかを考えるのが(効率の)いいプログラマなんだと思うんだが
どっちのメリット・デメリットも理解した上でデメリットに対応し、自分の楽なほうを選んでるんだからいい
何の説得力も説得材料もないそんなことしか言えないお前のほうがよっぽど低脳だ
0431nobodyさん
2008/02/16(土) 15:28:00ID:???じゃあなんでyahooはページ移動にセッション使ってないんだよ
効率悪いプログラマの集団かw
yahooにはPHP創始者もエンジニアとしているんだけどなw
0432nobodyさん
2008/02/16(土) 15:35:42ID:???やっぱり能力の低さがコンプレックスになってる奴は違う
0433nobodyさん
2008/02/16(土) 15:37:13ID:???0434nobodyさん
2008/02/16(土) 15:38:25ID:???yahooにとってはhiddenのメリットのほうが大きかったってことだろ
ちなみにデメリットの対処を考えると実はセッションの方が楽ではない
>yahooはページ移動にセッション使ってない・PHP創始者もエンジニアとしている
これは何の技術的理由にもならないことが分からんのか?
っていうか継続データのやり取りにセッション使ってないって保証はどこにあんの?
0435nobodyさん
2008/02/16(土) 15:40:00ID:???納品さえすれば、後のことは関係ないみたいなのばっか
セキュリティ0
0436nobodyさん
2008/02/16(土) 15:41:09ID:???楽天の会員登録ではセッション使っているようだが?
https://www.rakuten.co.jp/myrakuten/login.html
0437nobodyさん
2008/02/16(土) 15:43:44ID:???セキュリティもどちらが上というわけじゃないのに、
たまたまYAHOOがやっていたということを根拠にするのやめてくれない?w
ちゃんと自分の意見を言おうね。
0438nobodyさん
2008/02/16(土) 15:45:31ID:???やり方としてはどちらもありだし、
セキュリティもどちらが上というわけじゃないのに
---------------------------------------
同意
0439nobodyさん
2008/02/16(土) 15:53:34ID:???セッションよりもhiddenの方が安全に決まってるだろうがw
セキュリティで危険なのってセッション絡みが多い
hiddenで危険なのって聞かないというか
セッションだろうが最初の画面はhiddenで飛ばすし
0440nobodyさん
2008/02/16(土) 15:56:02ID:???最終画面でも総チェックした方が
セキュリティは上
セッションは書き換えられたらおしまい
0441nobodyさん
2008/02/16(土) 15:58:36ID:???おまえらもクッキーにしようぜ
0442nobodyさん
2008/02/16(土) 16:03:51ID:???他のページ行ってもどってきたらデータを引き継げない。
0443nobodyさん
2008/02/16(土) 16:04:24ID:w7he1Bjb>セッションよりもhiddenの方が安全に決まってるだろうがw
うん、だからhiddenの方が安全な理由を教えてよ
「hidden セッション」とかで検索するとhiddenのほうが否定的なんだけど
>>440
>セッションは書き換えられたらおしまい
これはセッションを(少しでも)利用してるシステム全部に言えること
継続データをhiddenにするかセッションにするかとは全く論点が違う
0444nobodyさん
2008/02/16(土) 16:05:52ID:???お前の言うことと「ipa.go.jp」のどちらを信じるか言うまでも無いw
hiddenは危険(セッション変数を利用しよう)
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_05.html
0445nobodyさん
2008/02/16(土) 16:33:40ID:???安全なWebアプリ開発の鉄則 2004
http://www.soi.wide.ad.jp/class/20040031/slides/09/
2006.4.4「CSRF」と「Session Fixation」の諸問題について
http://www.ipa.go.jp/security/vuln/event/documents/20060228_3.pdf
安全なWebアプリ開発の鉄則 2006
http://www.nic.ad.jp/ja/materials/iw/2006/proceedings/T21.pdf
0446nobodyさん
2008/02/16(土) 17:02:33ID:???0450nobodyさん
2008/02/16(土) 17:52:02ID:???0451nobodyさん
2008/02/16(土) 21:16:52ID:???hidden=オナニー
セッション=セックス
0452nobodyさん
2008/02/16(土) 21:29:42ID:???個人的な雑感で言えば、セッション派だなぁ。
セッションってそもそもクライアントの送ってくるデータが信用できないから
渋々サーバ側にデータ置いて、金庫の鍵だけやんよって話なんだから(違ったらごめんね)、
データの信用度で言えば当然セッションの方が上だと思うよ。
たとえば、証券会社の登録フォームとかはセッションの上に
さらに短めの有効期限が切ってあって、入力ステップに時間が
空くと別人の入力と判断して強制的にやり直しするって形を取ってる。
要するにさ、hiddenってブラウザの画面上にレンダリングされないってだけで
普通のテキストエリア置いてあるのと全く変わりないんだから、
突っつきやすさから言ったらhiddenのが危なくないかな。
反論ぷりーず
0453nobodyさん
2008/02/16(土) 21:32:14ID:???サーバ側のファイルまで信用ができなくなるってのはやばい。
でもそれってもう入力フォームでなんちゃらって話じゃないよね。
0454nobodyさん
2008/02/16(土) 21:56:28ID:???0455nobodyさん
2008/02/16(土) 22:03:29ID:???同一セッションで、複数のウインドウ(タブ)を開かれて同じ画面を
操作された場合への対処をどうするかとか、
セッション上のデータのクリアタイミングとかをちゃんと考えてあるなら
別にセッションでもいいんだけど。
hiddenだからって、少なくとも破壊的操作が入るところではデータの
妥当性検証をするのは当たり前の話で、それをやっていないのが論外なだけ。
で、システム形態だとか対処コストを考えて実装方式を決めてください。
0456nobodyさん
2008/02/16(土) 22:05:42ID:???http://www.ipa.go.jp/security/awareness/vendor/programming/a01_05.html
これでhiddenが危険といわれてもw
会員ログインページをhiddenで判別してるんだろ?
こんなことするやつおらんやろ
テーマにしてるのは
会員ログインはセッションだけど
それ以外の確認画面や単純なページ移動でセッション多様するのを議論してる
ページ移動にかかわる、どうでもいいデータまでもセッションていうのが糞
0457nobodyさん
2008/02/16(土) 22:14:00ID:???> hiddenだからって、少なくとも破壊的操作が入るところではデータの
> 妥当性検証をするのは当たり前の話で、それをやっていないのが論外なだけ。
hiddenでデータを渡したらページごとに
同じチェックしないといけないじゃん。
そういうのは面倒だろう。
それをフレームワークで良い感じに楽にやる方法は無いのか?という話題。
0458nobodyさん
2008/02/16(土) 22:15:07ID:???どうでもいいデータまでセッションにしてると
一時的ではあってもキャッシュたくさんになるわけよ
アクセス数多いサイトだと
生産性高くても負荷的にどうなんだよ?
0459457
2008/02/16(土) 22:16:20ID:???hiddenで表示する必要もあるね。
ここんところ、CakePHPでのスタンダードなやり方ってどうすんのさ?
0460nobodyさん
2008/02/16(土) 22:22:22ID:???構築経験も小規模サイトの経験しかない
0461nobodyさん
2008/02/16(土) 22:24:24ID:???クッキー対応してないプラットフォームを無視してるよな
0463nobodyさん
2008/02/16(土) 22:30:43ID:???CakePHPのスレだからここ。
CakePHPでのやり方を聞くのは普通なわけ。
すでに他でやったことあるけど、それは自力でやっているだけなの。
フレームワークとはそれを簡単に提供するものなわけ。
あんたの言っていることは「CakePHPでPOSTした情報をどうやって取得するんだ」
という問い対して、$_POSTで取得すると答えているようなもん。
それはCakePHPのやり方ではない! (>>460へのレスでもある)
言っている意味。わかる?
0464nobodyさん
2008/02/16(土) 22:32:38ID:???煽りしか返ってこないとき、
その機能は無いと思ったほうがいいよw
無いと答えるのが悔しくて煽りに走る。
もしくは>>460が知らないだけ。
0465nobodyさん
2008/02/16(土) 22:41:28ID:???負荷的な意見には納得せざるおえない
楽だけ優先しすぎて負荷的な要素を一切考えないというのはおかしい
CakePHPがページ移動にセッションで渡せという仕様にもなってないわけだし
1.2から標準装備されたページ送りみても
セッションじゃなくてパラメータを渡す方法でページ送りする仕様だし
0466nobodyさん
2008/02/16(土) 23:04:37ID:???ページ移動にくだらんデータまでセッションで使いやがったら
2度目の依頼はまずしない!!
0467nobodyさん
2008/02/16(土) 23:04:42ID:w7he1Bjbいやいや、誰もそんな議論はしてない。
ページングとかはGETパラメータで当たり前。
>>455
>同一セッションで、複数のウインドウ(タブ)を開かれて同じ画面を操作された場合への対処
これはほんとそうで、画面識別のためのトークンを発行するなどの対処が必要。
0468nobodyさん
2008/02/16(土) 23:15:35ID:???ページングとかはGETパラメータで当たり前てw
セッション使うなら
ページングにGETパラメータを渡し続ける必要ないだろ?
0469nobodyさん
2008/02/16(土) 23:21:29ID:???なんかosCommeceやOpenPNEやEC-CUBEのスレと同じ臭いがするよね
0470nobodyさん
2008/02/16(土) 23:23:05ID:???楽だからセッション使うなら
ページングもセッションつかったら楽だろうが
ページングだけセッション使わないて何でや?
検索条件増えるたびにページリンクにパラメータ記述するの面倒やろが
0471nobodyさん
2008/02/16(土) 23:27:04ID:???それは何かというと、URLをコピーしておいて、後でそれを貼り付ければ
同じ内容を表示できるという点。
URLをメールで送って他の人に同じものを見てもらうとかね。
POSTもしくはセッションだと、同じ条件で検索し直したり
ページ移動し直さないといけなくなるけど。
0472nobodyさん
2008/02/16(土) 23:31:30ID:???おまえ画面識別のためのトークン発行なんてしてないだろ?
楽しようとするやつがそんなセキュリティ的なことするわけないやんw
0473nobodyさん
2008/02/16(土) 23:53:21ID:???0474nobodyさん
2008/02/17(日) 00:04:35ID:???/branches/1.2.x.x/cake/libs/model/model.php (log) - CakePHP : The Rapid Development Framework for PHP - Trac
https://trac.cakephp.org/log/branches/1.2.x.x/cake/libs/model/model.php
ざっくり Revision Log見た感じChangeset 6315ってのがその修正なんじゃね?
ろくに読んでないしというか読んでも正直よくわかんないから違ったらドンマイ
0475nobodyさん
2008/02/17(日) 00:39:48ID:???してるよと言われても
セッションに関するセキュリティ対策を具体的にどうやってるのか
全く書かれてないので説得力がない
対策してるのは画面識別のためのトークン発行だけ?
これは具体的にどうやってるの?
0476nobodyさん
2008/02/17(日) 01:24:22ID:???セッションそのものの話だから。
一応それの対応は、ログイン時にセッションIDをはりかえる(セッション固定化の対応)。
もっと厳密にやりたい(そういう要求の)時はセッションID+ユーザエージェント(またはcookie)での認証(セッション乗っ取りの対応)。
ただこれはユーザビリティ的に問題があるからそこを説明した上で納得してもらえればって感じで。
トークンは、処理1(表示)、処理2(POST・確認)、処理3(実行)っていうときに、
処理1でトークンを生成してセッションに格納し、その値をhiddenに埋め込むか、処理2へのURLに付加する。
処理2でpostデータをセッションに格納(トークンをネームスペースとする(画面識別))。
処理3でセッションからpostデータを取り出してDBに反映。
この時、処理2でバリデート失敗なら処理4へリダイレクト(リダイレクトURLにトークン付加)。
処理4は処理1と同じ画面(同テンプレート)で、セッションのpostデータをinput valueに入れる。
この処理の間、どの処理を行ったのかをセッションで管理する。
そうすることで処理2,3,4に直接行くのを防ぐ。
またセッションに有効なトークンがない場合は処理2,3,4は実行不可。
こんな感じでやってる。
0477nobodyさん
2008/02/17(日) 01:32:49ID:???>そうすることで処理2,3,4に直接行くのを防ぐ。
1から3とか、4から3とかを防ぐ。
0478nobodyさん
2008/02/17(日) 03:23:34ID:???毎回入れるの面倒だけど、なんとかならんのかな
0479nobodyさん
2008/02/17(日) 11:13:38ID:???そういう汎用的だが面倒な処理ってのは、フレームワークでやってほしいね。
Cakeにはそんな機能無いの?
なければそういうコンポーネントとか。
0480nobodyさん
2008/02/17(日) 11:18:29ID:???おー。それであってる。branches以下を見ればよかったのか。
意図したところにちゃんとコード入ってるよ。
find('count')には入ってないけど、やっぱcountで
afterfindを呼び出す必要は無いのかな?
0481nobodyさん
2008/02/17(日) 13:03:45ID:???とはじめは思ったけどcountは
$results = $this->__filterResults($results, true);
省いても結果変わらないから別によくね?
初心者丸出しですいません
0482nobodyさん
2008/02/17(日) 23:54:36ID:???どうやってる?
モデルみたいに簡単にかく方法用意されてないのかな?
0483nobodyさん
2008/02/18(月) 04:05:14ID:???0484nobodyさん
2008/02/18(月) 04:06:19ID:???どうすれば動くの?
例)
c_userテーブル
0486484
2008/02/18(月) 04:56:56ID:???メンバ変数名に[$]が自動的についてしまうのが原因かな
もっと詳しく調べてみよう
0487nobodyさん
2008/02/18(月) 04:58:45ID:???0489484
2008/02/18(月) 05:05:59ID:???bakeでつかって作ると
var $helpers = array('Html', 'Form', '');
helpers配列の最後に空の値が自動的に入るクサい
空の値をとったら動いた
0490nobodyさん
2008/02/18(月) 05:14:55ID:???c_usersテーブル
app/models/c_user.php
CUser
app/controllers/c_users_controller.php
CUsersController
じゃなかったっけ試してないけど って解決したならいいや
0491484
2008/02/18(月) 05:20:30ID:???helperのときの質問でライブラリ名指定するとこで
そのままエンターしたから
空の値がはいっちゃったくさい
0492nobodyさん
2008/02/18(月) 06:19:30ID:???でリンク作成できるみたいだけど
リンクを新しいウィンドウで開かせたい場合はどうしてますか?
0493492
2008/02/18(月) 06:45:36ID:???array('target'=>'newwin')
でよかったんだ
0494nobodyさん
2008/02/18(月) 07:28:02ID:???激的に作業スピードが変わるということはないな
0496nobodyさん
2008/02/18(月) 09:47:10ID:???まあ、もとからそれが目的なのだろうから仕方ないかwww
0497nobodyさん
2008/02/18(月) 11:10:35ID:???cakeユーザはある意味凄いと思うよ
0498nobodyさん
2008/02/18(月) 11:17:26ID:???今まで沢山のサイト作ってきたので
0から作るようなサイトはあまりないよ
それを壊してフレームワークにするとかアホらしい作業
0500nobodyさん
2008/02/18(月) 14:50:14ID:???ブラックボックスの割に 穴だらけなのが困る
フレームワークの意味ねえよw
0501nobodyさん
2008/02/18(月) 17:24:44ID:???穴?
何の話?
0502nobodyさん
2008/02/18(月) 19:28:56ID:???後方互換取ろうとするもんだから、メソッド内での引き回しが地獄
■ このスレッドは過去ログ倉庫に格納されています