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/18 19:00 |
---|
V.bunny 様
baserCMSの管轄にあるページに対し、フォームによるHTTPリクエストを行った場合、 デフォルトではセキュリティに関するチェックが行われる仕様になっています。 ・CSRF対策 攻撃用の外部Webページから利用者の意図しないHTTPリクエストを送るCSRF(クロスサイトリクエストフォージェリ)攻撃への対策として、 多くのWebアプリケーションフレームワークでCSRFトークンというランダムな値を利用する仕組みが実装されています。 サーバでHTMLを生成した際にCSRFトークンをformのhiddenパラメータ等として仕込んでおき、 フォームデータの送信時にこのトークンをサーバ側で再び確認することで、不正なリクエストを防ぐというものです。 CakePHP/baserCMSでもこの仕組が実装されており、メールプラグインはこの仕様に合わせて実装されています。 例えば公式サイトの事例掲載申込ページのフォームのソースを見ていただければ、このようになっています。 http://basercms.net/postworks/index
現在試されているフォームにはそもそもCSRFトークンをhiddenパラメータで埋め込んでいないのでエラーが出ているということですね。 ・フォームの改ざん防止 同様にCakePHP/baserCMSのフォームのセキュリティに閑する機能として、フォームの入力項目が増減していたり改ざんされて不正なパラメータが入り込んでいないか、 リクエスト元のURLが正当かどうかをチェックする機能があります。 データを入れた際に引っかかっているのはこちらのチェックです。 baserCMSの中でフォームを扱う際にはこれらの仕様を考慮する必要があります。 フォーム設置の目的によりどうするのかが最適かは変わりますが、 対応策としては下記のいずれかになるでしょう。 * 該当のページでCSRF対策・フォーム改ざんチェックを行わないようにbaserCMSのコードを上書きする(基本的に非推奨) * POSTではなくGETやただのaタグによるリンクで実装する(場合によっては意図しない脆弱性を生むかもしれません) * baserCMSのメールプラグインで代用する * CakePHP/baserCMSのセキュリティの仕様に合わせ、Formヘルパーを利用したフォームをプラグインとして追加開発する Twitter: @n_1215 |