Support » Plugin: Shinobi Reviews » 非ログイン状態で「無効なリクエストです。」となります

  • Resolved namabeer350ml

    (@namabeer350ml)


    こんにちは。理想のレビュープラグインです!

    さて、導入しようとテストをしたところ、Wordpressにログイン状態でレビュー投稿すると「レビューの投稿に成功しました!」と表示され問題無く動作するのですが、非ログイン状態でレビュー投稿すると「無効なリクエストです。」と表示されて投稿が出来ません。

    ブラウザはFirefoxとSafariで確認しており、サーバも2つの仕様が異なるサーバで試しましたが同様でした。

    是非利用させていただきたいので、チェックすべきポイントがございましたら教えて頂けますと助かります。
    よろしくお願いいたします。

Viewing 15 replies - 1 through 15 (of 33 total)
  • Plugin Author Shinobi Works

    (@shinobiworks)

    こんにちは。
    この度はコメントありがとうございます。ご返信遅くなり申し訳ありません。

    さて、当該の不具合に関してですが、状況から判断するに、以前のトピックと同じかと思います。

    公式テーマの変更とシノビレビュー以外のプラグイン全停止の上、再度お試しいただき、それでも引き続き不具合が発生するようでしたらご相談いただければ幸いです。

    Thread Starter namabeer350ml

    (@namabeer350ml)

    こんにちは。ご返信ありがとうございます。

    Shinobi Reviewsのみ有効にした上でWordpressにログインせず検証してみました。
    ユーザー環境
    OS MacOS11.2.3
    ブラウザ Safariバージョン14.0.3 Firefox96.0.2

    (1)Twenty Twenty-Two バージョン: 1.0 (公式テーマ)
    レビュー表示されず(ログインしても表示されず)

    (2)Twenty Nineteen バージョン: 2.2 (公式テーマ)
    レビュー表示される(星が黄色では無く黒い) レビュー投稿を試みると「無効なリクエストです。」

    (3)Twenty Twenty バージョン: 1.9 (公式テーマ)
    レビュー表示されるが乱れ(通常横並びのはずの星が縦に並んでいる) レビュー投稿を試みると「無効なリクエストです。」

    (4)Twenty Twenty-One バージョン: 1.5 (公式テーマ)
    レビュー表示される レビュー投稿を試みると「無効なリクエストです。」

    お手数をおかけして恐縮ですが、よろしくお願いいたします。

    Plugin Author Shinobi Works

    (@shinobiworks)

    検証いただきありがとうございます。大変助かりました。

    私の環境下でも検証したところ、以下の結果でした。

    1. 最新デフォルトテーマ2022⇨動作せず
    (以前まで動いていた関数が正常に動かないようです。今回の問題とは関係ありませんが、今後対応する予定です)

    2.2019
    レビュー作成の星は黒いが正常に動作⇨スタイルを個別に当てて対応します

    3. 2020
    レビュー作成の星が縦に並ぶが正常に動作⇨スタイルを修正します

    4. 2021⇨正常に動作

    【検証内容】
    各ブラウザで検証してみました。(それ以前にブラウザ依存の関数を使っていないため、直接的な影響はないかと思います)

    スタイルの問題はあったものの、動作に関しては特に問題なく動作しました。
    また、ログイン・非ログインで動作の切り分けをしているわけではないため、原則同じく動作するはずです。

    以上を踏まえると、まず考えらるのは、サーバーです。
    以前、同じような状況の投稿があり、その際は、PHPのバージョンやサーバー側の対応が関係していました。

    大変申し訳ありませんが、不具合を再現できないと対応ができないため、引き続き検証材料をいただけると幸いです。プラグイン側に問題がある可能性は十分考えられるため、できる限り対応したいです。

    取り急ぎ、PHPのバージョンや、サーバーとの兼ね合いなど、ご確認いただければ幸いです。

    Thread Starter namabeer350ml

    (@namabeer350ml)

    詳細なご返信をいただき誠にありがとうございます。

    状況をまとめますと、
    Twenty Twenty-One バージョン: 1.5  使用時
    2つのサーバ(さくら、ロリポップ)で同じ現象です。
    ・ログインしてレビュー投稿→OK
    ・ログインせずレビュー投稿→NG
    ・ブラウザのプライベートブラウジングで投稿→NG

    以下、それぞれのサーバでのWordpressのサイトヘルスの情報より抜粋しました。
    他に必要な情報があればご指摘下さい。

    お手数をおかけして申し訳ございませんが、よろしくお願いいたします。

    ■サーバ1
    さくらのレンタルサーバ(スタンダード)
    Web サーバー Apache
    PHP バージョン 7.4.25 (64ビット値をサポートしています)
    PHP SAPI cgi-fcgi
    PHP 最大入力変数 (max input variables) 1000
    PHP タイムリミット 30
    PHP メモリ上限 50M
    PHPメモリ制限 (管理画面のみ) 256M
    最大入力時間 (max input time) -1
    アップロードの上限ファイルサイズ 30M
    PHP POST サイズ上限 40M
    cURL バージョン 7.47.0 OpenSSL/1.0.2o
    SUHOSIN はインストールされていますか ? いいえ
    Imagick ライブラリが利用可能になっていますか ? いいえ
    プリティパーマリンクには対応していますか ? はい
    .htaccess ルール .htaccess ファイルにカスタムルールが追加されました。

    Wordpress
    バージョン 5.9
    サイトの言語 ja
    ユーザー言語 ja
    タイムゾーン Asia/Tokyo
    ホーム URL ***
    サイト URL ***
    パーマリンク構造 /%post_id%/
    サイトは HTTPS を使用していますか ? はい
    マルチサイトですか ? いいえ
    サイト上で誰でも会員登録ができますか ? いいえ
    このサイトは検索エンジンを妨げていますか ? いいえ
    デフォルトコメントステータス 受付中
    環境タイプ production
    ユーザー数 1
    WordPress.org との通信 WordPress.org にアクセス可能

    ■サーバ2
    ロリポップ(ハイスピードプラン)
    Web サーバー LiteSpeed
    PHP バージョン 7.4.27 (64ビット値をサポートしています)
    PHP SAPI litespeed
    PHP 最大入力変数 (max input variables) 1000
    PHP タイムリミット 0
    PHP メモリ上限 256M
    最大入力時間 (max input time) 120
    アップロードの上限ファイルサイズ 100M
    PHP POST サイズ上限 100M
    cURL バージョン 7.29.0 NSS/3.36
    SUHOSIN はインストールされていますか ? いいえ
    Imagick ライブラリが利用可能になっていますか ? はい
    プリティパーマリンクには対応していますか ? はい
    .htaccess ルール .htaccess ファイルには WordPress コア機能のみが含まれています。

    Wordpress
    バージョン 5.9
    サイトの言語 ja
    ユーザー言語 ja
    タイムゾーン Asia/Tokyo
    ホーム URL***
    サイト URL ***
    パーマリンク構造 /%year%/%monthnum%/%day%/%postname%/
    サイトは HTTPS を使用していますか ? はい
    マルチサイトですか ? いいえ
    サイト上で誰でも会員登録ができますか ? いいえ
    このサイトは検索エンジンを妨げていますか ? いいえ
    デフォルトコメントステータス 受け付けません
    環境タイプ production
    ユーザー数 1
    WordPress.org との通信 WordPress.org にアクセス可能

    Plugin Author Shinobi Works

    (@shinobiworks)

    何度もお手間おかけし申し訳ありません。ご協力感謝します!
    さて、取り急ぎ、現状をお伝えします。

    やはり、現在の情報では原因の特定が難しい状況です。
    1番の問題は、ログイン・非ログインでまったく同じ処理をしているのにも関わらず、非ログイン状態でレビューが投稿できないことです。

    「無効なリクエストです。」のエラーは、悪意のある操作や誤操作からサイト(URLやフォーム)を守るためのプログラムであり、シノビレビューにおいて、このエラーが発生する原因は2つあります。

    1つ目は、レビューフォーム(モーダル)から送信されるデータに認証情報が含まれていないことです。
    当該情報はWordPressの関数で出力されますが、サーバー側で関連の動作を制限している可能性があります。

    2つ目は、サーバー側で認証情報を受け取れていないことです。この処理で使っている関数に私の知らない既知の問題がある可能性があります。PHPのバージョンとの兼ね合いもあるかもしれません。

    以上を踏まえ、私からの提案は以下になります。

    シノビレビューのファイル内にAppフォルダがあり、その中にInsertReview.phpファイルがあります。このファイルが認証やレビューの保存をしていて、ファイルの一部を改変することで検証が可能です。

    まず、認証のコードは以下のようになっています。

    if ( wp_verify_nonce( $nonce, 'post_review' ) ) {
    // 何かしらのコード
    // 何かしらのコード
    // 何かしらのコード
    }

    このwp_verify_nonceの先頭に!をつけると、結果が逆になります。コードは以下の形です。

    if ( ! wp_verify_nonce( $nonce, 'post_review' ) ) {
    // 何かしらのコード
    // 何かしらのコード
    // 何かしらのコード
    }

    この状態でレビューが投稿できれば認証の処理に何らかの問題があることになります。

    次に、同じファイル内に$nonce = filter_input( INPUT_POST, 'nonce' );のコードがあるのですが、これを$nonce = $_POST['nonce'];にした場合、結果が変わるかもしれません。

    どちらもWordPress管理画面内のプラグインエディターで変更できるため、差し支えなければお試しいただければ幸いです。

    Thread Starter namabeer350ml

    (@namabeer350ml)

    こちらこそ、ご対応頂きありがとうございます。

    教えて頂いた件ですが、下記のような結果になりました。
    追加での検証等ご遠慮なくお申し付けください。
    よろしくお願いいたします。

    if ( ! wp_verify_nonce
    にした場合
    ログイン→NG
    非ログイン→成功

    if ( ! wp_verify_nonce
    かつ
    $nonce = $_POST[‘nonce’];
    にした場合
    ログイン→NG
    非ログイン→成功

    if ( wp_verify_nonce
    かつ
    $nonce = $_POST[‘nonce’];
    にした場合
    ログイン→成功
    非ログイン→NG`

    Thread Starter namabeer350ml

    (@namabeer350ml)

    追記です
    上記の検証はロリポップ(ハイスピードプラン)環境下で行いました。

    Plugin Author Shinobi Works

    (@shinobiworks)

    検証いただきありがとうございます!

    わかったことは、認証結果が単純に逆になった、$noce部分は特に関係なかった、の2点になります。大変参考になりました。

    お手数おかけしますが、以下の検証もお願いできますでしょうか?

    先と同じファイル内31行目にadd_filter( 'nonce_user_logged_out', [ $this, 'uniq_id_for_logged_out_user' ], 10, 2 );の記述があるのですが、この行を丸々削除した場合の動作をご教示いただけますでしょうか?

    Thread Starter namabeer350ml

    (@namabeer350ml)

    ご確認ありがとうございます。

    ご指摘の箇所を削除したところ、ログイン状態、非ログイン状態ともに成功しました。
    表示も問題無いように思われます。

    この他に検証のお役に立てることがあれば、ご遠慮なくお申し付けください。

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

    Plugin Author Shinobi Works

    (@shinobiworks)

    色々とご協力いただきありがとうございました。大変助かりました。

    結果として、①ある領域の機能(今回の処理と関係する機能)を制限しているサーバーがある、②シノビレビューの当該部分のコードの記述が悪い、のどちらかの可能性が高いです。

    基本的に、まったく同じコードなのに、問題なく動作するサーバーと、不具合が発生するサーバーがある状況がおかしいのですが、今回はまさにその状況です。そのため、今後の対応が難しいのが本音です。

    今回の不具合の原因はおそらく「セッション」というプログラムになるかと思います。これは会員機能などでも使っているものです。ですので、一度、シノビレビューの会員機能を有効にした状態の動作もお聞かせいただければ幸いです。

    当該のプログラムに関しては、必須ではなく、あった方がベターのレベルなので、削除して対応しても良いのですが、少し考えてみます。

    Thread Starter namabeer350ml

    (@namabeer350ml)

    こんにちは。
    こちらこそ、レアケースと思われる状況の解決にご尽力いただきありがとうございました。

    会員機能を有効にして試したところ、レビュー成功しました。
    ちなみに、1度レビュー投稿したレビューに同じメールアドレスで別な投稿をしようとすると「すでにレビューを投稿しています。」との表示が出て投稿できないのですが、こちらは正常な動作でしょうか?

    現状の動作で実際運用しているサイトで稼働させることにセキュリティ等の問題はありますでしょうか?

    問題が無いようであれば稼働の上、近日トークンも購入させていただきたく思っております。

    Plugin Author Shinobi Works

    (@shinobiworks)

    こんにちは。
    会員機能が正常に動作するということは、今回干渉していた処理であるセッション自体は動作しているようです。

    今回の検証は以上になりますが、差し支えなければ、お使いのレンタルサーバーで当該機能のセッションに影響がある設定をしているかどうかのご確認、または、お問い合わせフォームなどでレンタルサーバー側に今回の不具合についてご確認いただければ大変助かります。(今回のURLをシェアしていただければわかりやすいかと思います)

    ちなみに、1度レビュー投稿したレビューに同じメールアドレスで別な投稿をしようとすると「すでにレビューを投稿しています。」との表示が出て投稿できないのですが、こちらは正常な動作でしょうか?

    はい、現時点のバージョンでは正常な動作になります。

    現状の動作で実際運用しているサイトで稼働させることにセキュリティ等の問題はありますでしょうか?

    コードを改変した状態でしょうか?でしたら、特段問題なくお使いいただけます。

    サーバー側の影響があるかどうかで対応も若干変わってきますが、現時点のアイディアとしては、機能のオンオフのオプションを用意するのが妥当かなと考えておりますので、一旦その方向で進めて参ります。

    Thread Starter namabeer350ml

    (@namabeer350ml)

    こんにちは。返信が遅くなり申し訳ございません。

    動作の件及び問題無く利用できる件、ご回答いただきありがとうございます。

    ご依頼頂いたレンタルサーバへの問い合わせの件ですが、現在回答を待っている状態です。

    回答を頂き次第、こちらに投稿させて頂きますので今しばらくお待ち頂けますでしょうか。

    引き続きよろしくお願いいたします。

    Plugin Author Shinobi Works

    (@shinobiworks)

    こんにちは!
    色々とご対応いただきありがとうございます。
    進捗ございましたらご共有いただけると幸いです。
    どうぞよろしくお願い申し上げます。

    Thread Starter namabeer350ml

    (@namabeer350ml)

    こんにちは。ご依頼の件ですが、ロリポップ様から返信をいただきました。

    下記に必要部分を引用させて頂きます。(※あらかじめ、ご回答の必要部分を当フォーラムに投稿させていただくことをお伝えしてあります。)

    下記にてロリポップ様がおっしゃっている
    ・「正しく動作する条件」「正しく動作しない条件」の切り分け
    ・動作しているという環境でのphp.iniの設定など
    をご教示頂けましたら、私の方から再度ロリポップ様に問い合わせをさせていただきます。

    お手数をおかけして恐縮ですが、よろしくお願いいたします。

    以下、ロリポップ様からのご返信引用部分となります。

    この度、お客様よりいただきました内容を元に弊社側での確認と調査を行わせていただきました。

    制作者の方が仰っている内容と重複いたしますが、弊社での検証の結果として改めてご案内させていただきます。

    投稿が可能な場合と投稿できない場合で、セッションの発行自体は問題なくできていることを再現環境で確認いたしました。
    投稿が可能な場合は、問題の箇所をコメントアウトしたケース、WordPressにログインしている状態でのケース、
    いずれも確認いたしました。

    また、今回制作者様の環境では正常に動作しているとお伺いいたしましたが、その環境についての言及は
    見当たりませんでしたので、弊社で差分を調査することはできませんでした。

     ・セッションの発行に問題がないことを確認した
     ・セッションに関して類似の問い合わせが現時点では確認できないためプログラム固有の問題ではないかと考える
     ・さくらのサーバーでも動作していないことからLiteSpeedサーバー固有の問題ではなさそうである

    という以上の点より、今回の弊社からの回答としては以下となります。

    引き続き調査をご希望の場合、
    「正しく動作する条件」「正しく動作しない条件」の切り分けをお願いいたします。

    サーバー側で特定の設定が有効かどうか、などを回答することは可能でございますが、
    個別のプログラムをデバッグしての調査は対応することができません。

    なお、動作しているという環境でのphp.iniの設定などを提供いただけましたら、
    弊社から差分をお伝えすることは可能でございます。

Viewing 15 replies - 1 through 15 (of 33 total)
  • The topic ‘非ログイン状態で「無効なリクエストです。」となります’ is closed to new replies.