■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。

n1215 > Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。 @ 2014/12/19 17:53
V.bunny 様

●エラーの内容について
CakePHPのSecurityComponentの仕様では、HTTPリクエストのメソッドがPOSTかPUTであるときのみ、
CSRFチェックがなされるはずなのでおかしいですね。

下記が該当コードです。GETの場合、$isPostはfalseになり、チェックはスルーされるはずです。
https://github.com/baserproject/basercms/blob/dev-3/lib/Cake/Controller/Component/SecurityComponent.php#L237-L244

メソッドがPOSTになっていませんか?


●GETとPOSTの使い分けについて
また、フォーム設置の目的により最適な方針は変わると書きましたが、
Sessionのデータを書き換えるなどサーバのリソースを変更するならば
原則としてGETの利用は避けたほうがいいと思います。
GETによってリクエストされるのは冪等かつ安全な操作であるべきとされています。

 * 冪等…… 何度行っても結果が同じという意味
 * 安全…… サーバ上のリソースへの副作用がない=リソースの状態を変更しないという意味

何度行っても結果が同じということで、多くのブラウザは特段の指示がない限りはレスポンスをキャッシュします。

一方、POSTは 冪等でない かつ 安全でない 操作になります。
ブラウザはHTTP POSTの結果をキャッシュしません。


●セキュリティについて
いろいろと作り込むということであればプラグインを作るまではいかずとも、
ページ内でBcFormヘルパーないしFormヘルパーを利用し、
正面からCSRFとフォーム改ざんのチェックをパスしたほうが安全です。

Twitter: @n_1215

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
34 人のユーザが現在オンラインです。 (34 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 34