メインコンテンツへ移動

Snow Monkey Forms の確認画面で「無効なアクセスです。」と表示されます

0
Who liked: No user
15件の投稿を表示中 - 1 - 15件目 (全18件中)
  • 投稿者
    投稿
  • #144737
    rie0310
    参加者
    10

    【お使いの Snow Monkey のバージョン】28.0.8
    【お使いの Snow Monkey Blocks のバージョン】 23.1.3
    【お使いの Snow Monkey Editor のバージョン】10.2.0
    【お使いの PHP のバージョン】8.3.10
    【お使いのブラウザ】
    【当該サイトのURL】(管理者により削除)

    ### 発生している問題

    いつも大変お世話になっております。

    これまで問題なく使用できていたのですが、Snow Monkey Forms の確認画面で「無効なアクセスです。」と表示されるようになりました。

    キャッシュの削除や、cookieをオフにして試してみたのですが、解決しませんでした。
    考えられる原因として何がありますでしょうか?

    ご多忙の中、大変恐縮ではございますが、ご教授いただけますと幸いです。
    よろしくお願いいたします。

     

    ### 試したこと

    0
    Who liked: No user
    #144738
    アバター画像キタジマ タカシ
    参加者
    2575

    ぱっとみた感じではページキャッシュの問題ではなさそうなので、とりあえずは地道に検証するしか無い気がします。無効なアクセスかどうかの処理をしている部分にログ出力を仕込んで、どのような値で処理が実行されているかを確認してみてください。

    下記の変更を入れてからフォームの送信を実行することで、サーバーのエラーログにログが記録されます。

    plugins/snow-monkey-forms/App/Model/Csrf.php

    	public static function validate( $posted_token ) {
    		if ( ! $posted_token ) {
    			return false;
    		}
    
    		if ( ! preg_match( '|^[a-z0-9]+$|', $posted_token ) ) {
    			return false;
    		}
    
    		$cookie_token = static::saved_token();
    		return ! is_null( $cookie_token ) && ! is_null( $posted_token ) && hash_equals( $cookie_token, $posted_token );
    	}

    	public static function validate( $posted_token ) {
    		error_log( "validate:\n" );
    		error_log( $posted_token . "\n" );
    		if ( ! $posted_token ) {
    			return false;
    		}
    
    		if ( ! preg_match( '|^[a-z0-9]+$|', $posted_token ) ) {
    			return false;
    		}
    
    		$cookie_token = static::saved_token();
    		error_log( $cookie_token . "\n" );
    		return ! is_null( $cookie_token ) && ! is_null( $posted_token ) && hash_equals( $cookie_token, $posted_token );
    	}

    に変更。

    	public static function validate_referer() {
    		// phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
    		$referer = isset( $_SERVER['HTTP_REFERER'] ) ? wp_unslash( $_SERVER['HTTP_REFERER'] ) : false;
    		// phpcs:enable
    		$homeurl = untrailingslashit( home_url( '/' ) );
    
    		return 0 === strpos( $referer, $homeurl );
    	}

    	public static function validate_referer() {
    		error_log( "validate_referer:\n" );
    		// phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
    		$referer = isset( $_SERVER['HTTP_REFERER'] ) ? wp_unslash( $_SERVER['HTTP_REFERER'] ) : false;
    		error_log( $referer . "\n" );
    		// phpcs:enable
    		$homeurl = untrailingslashit( home_url( '/' ) );
    		error_log( $homeurl . "\n" );
    
    		return 0 === strpos( $referer, $homeurl );
    	}

    に変更。

    あ、あと、Snow Monkey Forms のバージョンもお願いします!

    0
    Who liked: No user
    #144748
    rie0310
    参加者
    10

    ご返信ありがとうございます!

    変更を入れてフォームの送信を実行したのですが、サーバーのエラーログというのはどちらで確認できますでしょうか?
    契約しているサーバーはwpX Speedで、エラーログという項目には

    [Mon Apr 07 14:37:02.656799 2025] [fcgid:warn] [pid 19657] [client 112.69.162.153:45142] mod_fcgid: stderr: validate_referer:, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:02.656829 2025] [fcgid:warn] [pid 19657] [client 112.69.162.153:45142] mod_fcgid: stderr: https://xxxxx/contact/, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:02.656832 2025] [fcgid:warn] [pid 19657] [client 112.69.162.153:45142] mod_fcgid: stderr: https://xxxxx, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:33.990242 2025] [fcgid:warn] [pid 4155] [client 112.69.162.153:45564] mod_fcgid: stderr: validate_referer:, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:33.990325 2025] [fcgid:warn] [pid 4155] [client 112.69.162.153:45564] mod_fcgid: stderr: https://xxxxx/contact/, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:33.990332 2025] [fcgid:warn] [pid 4155] [client 112.69.162.153:45564] mod_fcgid: stderr: https://xxxxx, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:33.990337 2025] [fcgid:warn] [pid 4155] [client 112.69.162.153:45564] mod_fcgid: stderr: validate:, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:33.990342 2025] [fcgid:warn] [pid 4155] [client 112.69.162.153:45564] mod_fcgid: stderr: 3e4bf70d0fb3a369459d9fc10870ed9b42c68c55c722ee84357086aee2563215, referer: https://xxxxx/contact/
    [Mon Apr 07 14:37:33.990348 2025] [fcgid:warn] [pid 4155] [client 112.69.162.153:45564] mod_fcgid: stderr: 94bbffa23378f7774180aba9bbda4d257616fc858dc9e5e9f6a2e8c6bcd5f523, referer: https://xxxxx/contact/

    と記載があります。こちらのことでよろしいのでしょうか?
    Snow Monkey Forms のバージョンは10.0.2になります!

    ご確認のほど、よろしくお願いいたします。

    0
    Who liked: No user
    #144751
    アバター画像キタジマ タカシ
    参加者
    2575

    最後の2行の文字列は送信されたトークンと保存されているトークンで、ここが一致しないと不正なアクセスと判定されてしまいます。

    wpX Speed だと、サーバーキャッシュの設定があるようですが、これは有効になっていますかね?もし有効になっている場合、詳しい仕様がわからないので何ともなのですが、例えば PHP の出力もキャッシュするような仕様の場合はエラーになる可能性があるかもしれません。なので有効にしている場合は無効にして確認をお願いします。

    0
    Who liked: No user
    #144767
    rie0310
    参加者
    10

    ご返信ありがとうございます!

    wpX Speedのキャッシュの設定を無効にしたところ、確認画面でのエラーは表示されなくなりました!
    念の為、他の端末でも確認いただいている段階ですが、こちらで問題ないかと思います。

    ご多忙の中、ご対応いただきありがとうございました!とても助かりました。
    可能でありましたら各ドメイン部分は削除していただけますと幸いです。

    今後ともよろしくお願いいたします!

    1
    Who liked:
    #144770
    mihashinoriyuki
    参加者
    3

    自分の環境でもこの方法で解決しました!

    add_filter(
    	'snow_monkey_form/setting/session-name',
    	function () {
    		return '_snow_monkey_form_session_' . md5( __FILE__ . get_current_blog_id() );
    	}
    );
    0
    Who liked: No user
    #144775
    アバター画像キタジマ タカシ
    参加者
    2575

    @mihashinoriyuki さん
    Snow Monkey Forms に snow_monkey_form/setting/session-name というフィルターフックってありましたっけ?
    なぜこのコードで解決できるのか興味があるので良かったら教えてください!

    0
    Who liked: No user
    #144777
    mihashinoriyuki
    参加者
    3

    ご返信ありがとうございます!
    詳しくは自分でもまだ完全には理解できていないのですが、海外の事例を参考にしてみたところ、このフィルターを使うとセッション名が安定して「無効なアクセス」のエラーが出なくなりました。

    もしかしたらプラグインやPHPのセッションまわりで、ランダムにズレが起きていたのかな?と思っています。

    自分の知識不足で説明があやふやになってしまって恐縮ですが、結果として安定したのでご報告させていただきました!

    0
    Who liked: No user
    #144781
    アバター画像キタジマ タカシ
    参加者
    2575

    なるほどです。snow_monkey_form/setting/session-name というフィルターフックを入れたかな?というのと、Snow Monkey Forms では PHP セッションは使っていないと思うので、気になっての質問でした。でも実際に効果があったのであれば何かあるのかもしれませんね。ありがとうございました!

    @rie0310 さん
    解決済みということで、トピックのクローズをお願いします!

    0
    Who liked: No user
    #144785
    mihashinoriyuki
    参加者
    3

    先ほどはアドバイスありがとうございました!

    session-name のフィルターを追加してから、最初はうまく動作していたのですが、
    何度か試しているうちに、また「無効なアクセスです」というエラーが出るようになってしまいました。

    現在は、

    「確認画面あり」「なし」両方とも
    フィルターを入れていても
    フォームを作り直しても
    送信できたりできなかったり…といった不安定な状態です。
    他の Snow Monkey Forms を使っているサイト(同じさくらサーバー)では問題なく動作しているので、
    原因が自分ではもう特定できず、もし可能でしたら開発者の方で詳しく調べていただけないかと思っています。

    素人ながら、できる範囲で設定や検証はしてみたつもりです。
    何かログを送るなどお手伝いできることがあれば、喜んで協力します!

    よろしくお願いいたします。

    0
    Who liked: No user
    #144790
    アバター画像キタジマ タカシ
    参加者
    2575

    となるとやはりフィルターは効いていなくて、偶然キャッシュの更新のタイミングだったとか、そういう感じがしますね。

    基本的には

    で書いたように、コードを改変してロガーを仕込み、ログを確認して、最後の2行が一致していなければページキャッシュが怪しい(サーバーのキャッシュ機能 or キャッシュ系プラグイン)という感じになるかなと思います。

    0
    Who liked: No user
    #144797
    mihashinoriyuki
    参加者
    3

    こんにちは。以前ご相談させていただいた「フォーム送信時に“無効なアクセスです”と出る件」について、
    さくらサーバーのエラーログを見てみたところ、以下のような記録が出ていました。

    forbidden by Options directive
    [Tue Apr 08 14:38:38.284418 2025] [php:notice] … validate_referer:
    referer: https://ohaka.butuji384.com/muyu-no-mori/reservation/

    何度か出ていて「validate_referer」とか「forbidden」などと書かれていたのですが、
    これはフォームの送信がブロックされてしまっている原因なのかなと思いまして…。

    専門的なことが詳しく分からず恐縮ですが、
    このログが「無効なアクセス」と表示される原因になっている可能性はあるでしょうか?

    もしお時間があれば、考えられることなど教えていただけるととても助かります。

    どうぞよろしくお願いいたします!

    0
    Who liked: No user
    #144799
    アバター画像キタジマ タカシ
    参加者
    2575

    forbidden by Options directive はわかりませんが、validate_referer:〜 は今回追加していただいたロガーですね。ちょっとこれだけでは何もわからないので、下記のリプライのように、コードを改変して記録されるようになったログをすべて共有してください。

    0
    Who liked: No user
    #144804
    mihashinoriyuki
    参加者
    3

    ご返信ありがとうございます。
    ご指摘の通り、validate_referer: の出力は、以前アドバイスいただいたロガーを使わせていただいて記録されたものです。

    素人ながらではありますが、フォーム送信時の挙動を見ながらログを確認してみました。

    ご指示いただいた通り、記録されたログ全文を画像で添付して共有させていただきます。
    お忙しいところ恐縮ですが、何か原因の手がかりなどあればご教示いただけますと幸いです。
    引き続きどうぞよろしくお願いいたします。

    0
    Who liked: No user
    #144806
    アバター画像キタジマ タカシ
    参加者
    2575

    ありがとうございます。やはり最後の2行(サーバーに保存されているトークンとフォームから送信されたトークン)の値が異なっていますね。これだと不正なアクセス扱いになります。

    キャッシュ系のプラグインを使ったり、サーバー側で PHP やページをキャッシュする機能(あるいは何らかの高速化機能)を有効化していませんかね?

    0
    Who liked: No user
15件の投稿を表示中 - 1 - 15件目 (全18件中)
  • トピック「Snow Monkey Forms の確認画面で「無効なアクセスです。」と表示されます」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。