ノーマルモードではメールフォームでエラー表示され送信出来ない。デバックモードでは送信可能。

Garyuten > ノーマルモードではメールフォームでエラー表示され送信出来ない。デバックモードでは送信可能。 @ 2015/6/24 19:57
■ BaserCMSのバージョン:3.0.7
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用: [ON]
■ 設置フォルダ: [ドキュメントルート]
■ 利用しているデータベース: [MySQL]
■ PHPスキル(自己評価): [C]

メールフォームで特定条件下でメール送信できない現象が起き、困っています。
もし解決策をご存知でしたら教えてください。

現象
メールフォームで確認画面までは進む。
その後、フォーム送信すると以下のエラーメッセージが表示されてしまう。

不正なリクエストと判断されました。(type:auth)バリデーションエラーまたはコントローラ/アクションの不一致によるエラーです。
エラー: The request sent to the address '/contact/submit' was invalid.


フォームや設定条件
◯フォームについて
・file(ファイル添付)は使っていない
・郵便番号→住所検索は使っていない
・ラジオボタン、チェックボックス、text,textareaで10個未満の入力フィールド

◯システム
・メール設定関連でSMTP設定関連は空のまま
・管理者のメールアドレスは、baserCMS設置サイトとは違うドメインのもの
・開発モード:ノーマルモード


試したこと
「デバックモード1」or「デバックモード2」にすると問題なくメール送信の完了画面が表示されました(エラーメッセージなし)

関連フォーラム
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=1803&forum=3
こちらのフォーラム内容を確認しましたが、こちらは確認画面の話だったようで、原因は違うようでした。


現在は、デバックモード1でなんとか運用してもらっています。
何かお気づきの点ががありましたらご教授いただけると助かります。
Garyuten > Re: ノーマルモードではメールフォームでエラー表示され送信出来ない。デバックモードでは送信可能。 @ 2016/1/18 11:58
■ BaserCMSのバージョン:3.0.9
■ レンタルサーバー名:ロリポップ

3.0.9でも同様の現象が起きています。
仕方ないのでデバックモード1で公開しています。

補足ですが、確認画面上のHTMLソースではトークン情報はきちとんと出力されていました。

<div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="d07a9e8a4bd565e974812437949b9708eca9125b%3AMessage.auth_captcha" id="TokenFields1202912763"/><input type="hidden" name="data[_Token][unlocked]" value="MAX_FILE_SIZE%7CMessage.mode%7Cx%7Cy" id="TokenUnlocked256715178"/></div></form></div>


たしかデバックモードはキャッシュを生成しないんですよね?
メールプラグインが使うどこかのフォルダやファイルの書き込み権限だったりしますか?
dpocket > Re: ノーマルモードではメールフォームでエラー表示され送信出来ない。デバックモードでは送信可能。 @ 2016/2/7 15:47
私も同様の状況で、検索していたらこちらのスレッドにたどり着きました。

ノーマルモードではこちらの環境下でも下記の通りのエラーが出ます。
デバッグモードではエラー表示なく正常に送信できています。

「不正なリクエストと判断されました。(type:auth)バリデーションエラーまたはコントローラ/アクションの不一致によるエラーです。」

 エラー: The request sent to the address '/contact/confirm?url=contact%2Fconfirm' was invalid.


【環境情報】
・スマートURL: ON
・設置フォルダ: 自宅サーバー(Windows server)
・セーフモード:Off
・データベース: SQLite
・baserCMSバージョン: 3.0.7
・CakePHPバージョン: 2.5.3
n1215 > Re: ノーマルモードではメールフォームでエラー表示され送信出来ない。デバックモードでは送信可能。 @ 2016/2/15 15:57
Garyuten様

エラーメッセージからすると
フォーム改ざん防止チェックに引っかかっているようです。

引用:

>フォーム改ざん防止¶
> デフォルトでは、 SecurityComponent は、ユーザーが特定の方法でフォームを改変することを 防ぎます。 SecurityComponent は、以下のことを防止します。
>
> フォームに新規フィールドを追加することはできません。
> フォームからフィールドを削除することはできません。
> hidden フィールドの値を更新することはできません。


フォーム生成時にMailformHelper(ないしFormHelper)を通じて出力された内容と、
フォームから送信されたユーザーの入力を比較することで、改ざんがあったかどうかを判断します。
デバッグモードではこのチェックとCSRFトークンのチェックがオフになるため、送信が可能ということでしょう。
セキュリティ的に問題があるので早めに解決した方がいいですね。

ありがちな原因としては、

1.JavaScriptによる入力項目や送信内容の書き換えが行われている。
2.フォームのテンプレートでMailformHelperを経由せずHTMLに出力されている入力項目がある(例えばinputタグを直書きしている)

くらいでしょうか。
メールプラグインの特定の入力項目タイプの不備かもしれませんし、
カスタマイズが原因という可能性もあります。

Twitter: @n_1215

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


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

検索

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

フォーラムガイド


関連リンク

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

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