Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。
- V.bunny > フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。 @ 2014/12/18 15:29
- n1215 > Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。 @ 2014/12/18 19:00
- V.bunny > Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。 @ 2014/12/19 9:33
- V.bunny > Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。 @ 2014/12/19 14:00
- » n1215 > Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。 @ 2014/12/19 17:53
- V.bunny > Re: フォーム送信したら「type:csrf」や「type:auth」エラーが出ます。 @ 2014/12/24 16:14
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 |