トップページphp
1001コメント315KB

【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/
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:???
hiddenで毎画面チェックして
最終画面でも総チェックした方が
セキュリティは上

セッションは書き換えられたらおしまい
0441nobodyさん2008/02/16(土) 15:58:36ID:???
rails様がセッションでもhiddenでもなくクッキーに書き出してるんだから
おまえらもクッキーにしようぜ
0442nobodyさん2008/02/16(土) 16:03:51ID:???
hiddenじゃセッションの代わりにはならないよ?
他のページ行ってもどってきたらデータを引き継げない。
0443nobodyさん2008/02/16(土) 16:04:24ID:w7he1Bjb
>>439
>セッションよりもhiddenの方が安全に決まってるだろうがw
うん、だからhiddenの方が安全な理由を教えてよ
「hidden セッション」とかで検索するとhiddenのほうが否定的なんだけど

>>440
>セッションは書き換えられたらおしまい
これはセッションを(少しでも)利用してるシステム全部に言えること
継続データをhiddenにするかセッションにするかとは全く論点が違う
0444nobodyさん2008/02/16(土) 16:05:52ID:???
>>439
お前の言うことと「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:???
ここまで馬鹿と利口が鮮やかに色分けされているスレも珍しいな。
0447nobodyさん2008/02/16(土) 17:03:41ID:???
>>446
どちらが馬鹿か指摘してよ。そうすればあんたが馬鹿かかどうかわかるからw
0448nobodyさん2008/02/16(土) 17:06:26ID:???
>>447
「とりあえずお前はバカのボックスに入ってくれ」とさ
0449nobodyさん2008/02/16(土) 17:11:41ID:???
>>448
おやおや? 何か気に障りましたかな?w
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:???
>>444
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_05.html
これでhiddenが危険といわれてもw

会員ログインページをhiddenで判別してるんだろ?
こんなことするやつおらんやろ

テーマにしてるのは
会員ログインはセッションだけど
それ以外の確認画面や単純なページ移動でセッション多様するのを議論してる
ページ移動にかかわる、どうでもいいデータまでもセッションていうのが糞
0457nobodyさん2008/02/16(土) 22:14:00ID:???
>>455
> hiddenだからって、少なくとも破壊的操作が入るところではデータの
> 妥当性検証をするのは当たり前の話で、それをやっていないのが論外なだけ。

hiddenでデータを渡したらページごとに
同じチェックしないといけないじゃん。
そういうのは面倒だろう。

それをフレームワークで良い感じに楽にやる方法は無いのか?という話題。
0458nobodyさん2008/02/16(土) 22:15:07ID:???
セッション使えばサーバーにキャッシュがたまるからさ
どうでもいいデータまでセッションにしてると
一時的ではあってもキャッシュたくさんになるわけよ
アクセス数多いサイトだと
生産性高くても負荷的にどうなんだよ?
04594572008/02/16(土) 22:16:20ID:???
それと、POSTした内容すべてを次のページに
hiddenで表示する必要もあるね。
ここんところ、CakePHPでのスタンダードなやり方ってどうすんのさ?
0460nobodyさん2008/02/16(土) 22:22:22ID:???
459はサーバー運用した経験がないように思う
構築経験も小規模サイトの経験しかない
0461nobodyさん2008/02/16(土) 22:24:24ID:???
railsはサーバー負荷かけないようにクッキーらしいが
クッキー対応してないプラットフォームを無視してるよな
0462nobodyさん2008/02/16(土) 22:26:24ID:???
>>460
煽り厨ウザイよ
0463nobodyさん2008/02/16(土) 22:30:43ID:???
>>460
CakePHPのスレだからここ。

CakePHPでのやり方を聞くのは普通なわけ。

すでに他でやったことあるけど、それは自力でやっているだけなの。

フレームワークとはそれを簡単に提供するものなわけ。

あんたの言っていることは「CakePHPでPOSTした情報をどうやって取得するんだ」
という問い対して、$_POSTで取得すると答えているようなもん。

それはCakePHPのやり方ではない! (>>460へのレスでもある)

言っている意味。わかる?
0464nobodyさん2008/02/16(土) 22:32:38ID:???
○○機能ある?と聞いて
煽りしか返ってこないとき、
その機能は無いと思ったほうがいいよw

無いと答えるのが悔しくて煽りに走る。

もしくは>>460が知らないだけ。
0465nobodyさん2008/02/16(土) 22:41:28ID:???
460は煽りではないと思うよ
負荷的な意見には納得せざるおえない
楽だけ優先しすぎて負荷的な要素を一切考えないというのはおかしい
CakePHPがページ移動にセッションで渡せという仕様にもなってないわけだし
1.2から標準装備されたページ送りみても
セッションじゃなくてパラメータを渡す方法でページ送りする仕様だし
0466nobodyさん2008/02/16(土) 23:04:37ID:???
案件依頼だしたときに、何の確認もなく
ページ移動にくだらんデータまでセッションで使いやがったら
2度目の依頼はまずしない!!
0467nobodyさん2008/02/16(土) 23:04:42ID:w7he1Bjb
>>465
いやいや、誰もそんな議論はしてない。
ページングとかはGETパラメータで当たり前。

>>455
>同一セッションで、複数のウインドウ(タブ)を開かれて同じ画面を操作された場合への対処
これはほんとそうで、画面識別のためのトークンを発行するなどの対処が必要。
0468nobodyさん2008/02/16(土) 23:15:35ID:???
>>467
ページングとかはGETパラメータで当たり前てw
セッション使うなら
ページングにGETパラメータを渡し続ける必要ないだろ?
0469nobodyさん2008/02/16(土) 23:21:29ID:???
Cakeユーザーのしったかこえー
なんかosCommeceやOpenPNEやEC-CUBEのスレと同じ臭いがするよね
0470nobodyさん2008/02/16(土) 23:23:05ID:???
>>467
楽だからセッション使うなら
ページングもセッションつかったら楽だろうが
ページングだけセッション使わないて何でや?
検索条件増えるたびにページリンクにパラメータ記述するの面倒やろが
0471nobodyさん2008/02/16(土) 23:27:04ID:???
たとえ他でセッションを使っていようと、検索条件、ページとかはGETを使う意味があって。

それは何かというと、URLをコピーしておいて、後でそれを貼り付ければ
同じ内容を表示できるという点。
URLをメールで送って他の人に同じものを見てもらうとかね。

POSTもしくはセッションだと、同じ条件で検索し直したり
ページ移動し直さないといけなくなるけど。
0472nobodyさん2008/02/16(土) 23:31:30ID:???
>>467
おまえ画面識別のためのトークン発行なんてしてないだろ?
楽しようとするやつがそんなセキュリティ的なことするわけないやんw
0473nobodyさん2008/02/16(土) 23:53:21ID:???
してるよ。楽をするのとセキュリティを疎かにするのは別の話。
0474nobodyさん2008/02/17(日) 00:04:35ID:???
>>429
/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:???
>>473
してるよと言われても
セッションに関するセキュリティ対策を具体的にどうやってるのか
全く書かれてないので説得力がない

対策してるのは画面識別のためのトークン発行だけ?
これは具体的にどうやってるの?

0476nobodyさん2008/02/17(日) 01:24:22ID:???
セッションに関するセキュリティ対策は、継続データをhiddenに格納するかセッションに格納するかに関係はないよね。
セッションそのものの話だから。
一応それの対応は、ログイン時にセッション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:???
$form->inputの配列オプションarray('DIV'=>false)を
毎回入れるの面倒だけど、なんとかならんのかな
0479nobodyさん2008/02/17(日) 11:13:38ID:???
>>476
そういう汎用的だが面倒な処理ってのは、フレームワークでやってほしいね。
Cakeにはそんな機能無いの?
なければそういうコンポーネントとか。
0480nobodyさん2008/02/17(日) 11:18:29ID:???
>>474
おー。それであってる。branches以下を見ればよかったのか。
意図したところにちゃんとコード入ってるよ。

find('count')には入ってないけど、やっぱcountで
afterfindを呼び出す必要は無いのかな?
0481nobodyさん2008/02/17(日) 13:03:45ID:???
使い道はわかんないけどcountだからafterfind要らないって発想だとバグ生みそう
とはじめは思ったけどcountは
$results = $this->__filterResults($results, true);
省いても結果変わらないから別によくね?
初心者丸出しですいません
0482nobodyさん2008/02/17(日) 23:54:36ID:???
モデル以外(クッキーや単純なPOSTなど)のバリデーションって
どうやってる?

モデルみたいに簡単にかく方法用意されてないのかな?
0483nobodyさん2008/02/18(月) 04:05:14ID:???
cakeのソースってzendframeworkと比べると汚いんですか?
0484nobodyさん2008/02/18(月) 04:06:19ID:???
テーブル名にアンダーバーつけたら動かない
どうすれば動くの?

例)
c_userテーブル

0485nobodyさん2008/02/18(月) 04:56:32ID:???
>>483
自分で見て確かめれ。報告はいらない。
04864842008/02/18(月) 04:56:56ID:???
テーブル名にアンダーバーつけて動かないのは
メンバ変数名に[$]が自動的についてしまうのが原因かな
もっと詳しく調べてみよう
0487nobodyさん2008/02/18(月) 04:58:45ID:???
$? まあどうでもいいやw
0488nobodyさん2008/02/18(月) 05:01:46ID:???
>>484
俺は普通に動いてる
04894842008/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
じゃなかったっけ試してないけど って解決したならいいや
04914842008/02/18(月) 05:20:30ID:???
bake使ったときに
helperのときの質問でライブラリ名指定するとこで
そのままエンターしたから
空の値がはいっちゃったくさい
0492nobodyさん2008/02/18(月) 06:19:30ID:???
$html->link()
でリンク作成できるみたいだけど
リンクを新しいウィンドウで開かせたい場合はどうしてますか?
04934922008/02/18(月) 06:45:36ID:???
第2引数に
array('target'=>'newwin')
でよかったんだ
0494nobodyさん2008/02/18(月) 07:28:02ID:???
cakephp使ってからコード見やすくなったけど
激的に作業スピードが変わるということはないな
0495nobodyさん2008/02/18(月) 08:27:29ID:???
>>485
見ましたがゲロ以下のソースでした
0496nobodyさん2008/02/18(月) 09:47:10ID:???
報告はいらないといったのにやっぱりするんだなw
まあ、もとからそれが目的なのだろうから仕方ないかwww
0497nobodyさん2008/02/18(月) 11:10:35ID:???
よくこんなゲロ以下のコードのFWの上ででみんなよくやるね
cakeユーザはある意味凄いと思うよ
0498nobodyさん2008/02/18(月) 11:17:26ID:???
0から作るにはフレームワークがいいけど
今まで沢山のサイト作ってきたので
0から作るようなサイトはあまりないよ
それを壊してフレームワークにするとかアホらしい作業
0499nobodyさん2008/02/18(月) 11:33:10ID:???
>>497
オプソなんだからお前が修正しろ。
もしくは自分で作れ。
0500nobodyさん2008/02/18(月) 14:50:14ID:???
汚いというか
ブラックボックスの割に 穴だらけなのが困る

フレームワークの意味ねえよw
0501nobodyさん2008/02/18(月) 17:24:44ID:???
ブラックボックス?
穴?
何の話?
0502nobodyさん2008/02/18(月) 19:28:56ID:???
ブラックボックスというか、各メソッドの引数決めに迷走した挙句
後方互換取ろうとするもんだから、メソッド内での引き回しが地獄
0503nobodyさん2008/02/18(月) 20:31:27ID:???
>>502
それには同意。引数の名前の通りに使ってくれと思う。

でも、それを理由に他のフレームワークを調べてみたんだが、
どうもCakeほど総合力で勝っているものが無い・・・
もう無くてもいいかもしれんが個人的にPHP4、PHP5コード互換と
アソシエーションとかデータベース周りが一番実用的なんだよなぁ。

※PHP4、PHP5コード互換とはPHP4用とPHP5用で同じコードが使えるという意味。
CodeIgniterはPHP4対応だが、コンストラクタがPHP4とPHP5でのやり方が違って拍子抜け。
0504nobodyさん2008/02/18(月) 20:38:36ID:???
>>503
アソシエーションって対象のモデルデータしか必要ない時も他のモデルデータくっつけるから微妙じゃない?
0505nobodyさん2008/02/18(月) 20:44:06ID:???
なんかレベル低いやつばかりだな。いくつかアプリケーション作ってから物言えよ
0506nobodyさん2008/02/18(月) 20:52:34ID:???
お前もな
0507nobodyさん2008/02/18(月) 21:34:20ID:???
Cakeの導入考えてるんだど、ちょっと質問させてください。
大きなデータベースをガシガシ使う予定があるんだけど、
やっぱりPDO使う場合に比べてCakePHPでシステム作ると
データ処理とか重くなりますか?
0508nobodyさん2008/02/18(月) 21:59:37ID:???
コード読むと穴だらけなのが使えないな

なんでわざわざフレームワークの穴埋めする必要があるのかとw
0509nobodyさん2008/02/18(月) 22:05:30ID:???
フレームワークに穴があるのか?
0510nobodyさん2008/02/18(月) 22:07:30ID:???
>>507
そりゃPDOを素で使うよりは重い
0511nobodyさん2008/02/18(月) 22:16:09ID:???
>>508
そういうのは、言い出した人が証明する義務を持つってのが
世の中の常識だってわかってる?
まあわかっていたらそんな中途半端なこと言わないと思うが。
05125072008/02/18(月) 22:19:43ID:???
>>510
やっぱそうですよね…
体感で明らかに違うくらい差がありますかね?
少しでも軽いシステムを作る場合は、Cakeは避けた方が無難
なのかな…便利そうで使ってみたかったけど…
0513nobodyさん2008/02/18(月) 22:23:52ID:???
少しでも軽いシステムを作るのなら、
C言語を使ったほうがいいよ。
0514nobodyさん2008/02/18(月) 22:24:12ID:???
>>512
>少しでも軽いシステムを作る場合は、Cakeは避けた方が無難
そうじゃない
少しでも軽いシステムを作る場合は、フレームワークは避けた方が無難
「少しでも」が何と比較してなのかはわからんが
0515nobodyさん2008/02/18(月) 22:39:15ID:???
少しでもリクエスト数への耐性稼ぎたいなら自前でキャッシュさせたり
静的HTML吐いたりとか検討すべきだし
0516nobodyさん2008/02/18(月) 22:41:31ID:???
そんなことより少しでも早く
システムを作ってさい。
0517nobodyさん2008/02/18(月) 22:54:50ID:???
フレームワークはCakePHP使ってるけど
俺俺関数はすべてc言語でPHP拡張モジュールにして利用してるよ
高速化と利便性を意識してやってる


0518nobodyさん2008/02/18(月) 23:09:21ID:???
>>511

証明するもなにも使えばすぐわかる

セキュリティホールが簡単にできてしまう
基本的なDB関係やパラメータの受け渡しで穴がある

もちろん気をつければいいんだが
フレームワークでそんなとこに気をつけなきゃいけない
というのがちょっといまいち

素人がセキュリティホールだらけのサイトつくりまくって
PHPの糞さを助長しなければいいのだが
0519nobodyさん2008/02/18(月) 23:09:23ID:???
>>504
マニュアルぐらいちょろっと読んだほうがいいよ
0520nobodyさん2008/02/18(月) 23:10:50ID:???
あれもこれもと親切すぎるわりに
規則に統一性がなく 中途半端な感じ

まあオープンソースの宿命といえばそれまでだけどね
0521nobodyさん2008/02/18(月) 23:11:32ID:???
>>518
だからさ、証明するのはあんたの仕事なんだって。
0522nobodyさん2008/02/19(火) 00:55:22ID:???
CakePHPのテーブルの命名規約って面倒なんだけど、
例えばtable1、table2ってテーブル名があったら、
table1s、table2sってしても大丈夫?
0523nobodyさん2008/02/19(火) 01:27:54ID:???
>>521

証明しないとわからない人間が使うとどうなるか…

PHPは糞言語っていわれるのがおちだなあ

1.3くらいでもうちょい使いやすくなってるといいな
0524nobodyさん2008/02/19(火) 01:35:39ID:???
>>523
だから説明する義務があるんだってば
何話すり替え店だよwww
0525nobodyさん2008/02/19(火) 01:56:18ID:???
そんなテーブル名のシステム投げ捨ててしまえ
0526nobodyさん2008/02/19(火) 02:14:54ID:???
Cakeとかの名前の付け方を見てて
つくづく英語の複数形という考え方はすごいと思うよ。
05275222008/02/19(火) 03:15:24ID:???
>>525
いや、まじで数字の入ったテーブルがあって、それを複数形にしなくちゃいけないんだよ(つД`)
可能かどうかわかる?
0528nobodyさん2008/02/19(火) 03:30:47ID:???
複数形にしようが単数形のままだろうが、
まったく違う名前にだろうが自由自在。
0529nobodyさん2008/02/19(火) 04:19:11ID:???
語尾が数字の場合は
table1 なら TableFirsts
table2 なら TableSeconds
table3 なら TableThirds

になるらしい
05305222008/02/19(火) 07:30:26ID:???
>>529
さんきゅー!!それでいってみます!
0531nobodyさん2008/02/19(火) 12:02:14ID:???
>>530
ウソなのに気づかないなんて
ホント馬鹿ですねw
0532nobodyさん2008/02/19(火) 14:11:35ID:twNHgR++
>>531
ホラっ、そんなこと言っちゃダメっ!w
0533nobodyさん2008/02/19(火) 20:39:50ID:???
>>518
>基本的なDB関係やパラメータの受け渡しで穴がある

それ結構重要な話だからkwsk
0534nobodyさん2008/02/19(火) 21:00:41ID:???
ヒント
SQLという言語には穴があるといわれている。
0535nobodyさん2008/02/19(火) 21:33:04ID:???
何を言ってるのかさっぱりわからないんだけど、
要するにフレームワーク自体にSQLインジェクションの脆弱性があるって事?
kwskkwsk
0536nobodyさん2008/02/19(火) 21:40:29ID:???
>>535
Qという文字に穴が開いてるだろうがバカw
0537nobodyさん2008/02/19(火) 23:27:20ID:???
何その程度の低さ
0538nobodyさん2008/02/20(水) 08:44:17ID:???
ここらあたりのことかな?
http://www.1x1.jp/blog/2007/07/cakephp_operator_injection.html
■ このスレッドは過去ログ倉庫に格納されています