サポート » 使い方全般 » ブロックエディターのJSONレスポンスのエラー

  • miwarock777

    (@miwarock777)


    下記の条件が揃ったときに、
    「更新に失敗しました。 返答が正しい JSON レスポンスではありません。」
    のエラーが起こり、記事の公開ができない(下書き保存になる)ことが分かりました。

    ◯WAF(SiteGuard Edition)有効
    ◯Gutenbergブロックエディターを使用
    ◯英文を入力(半角スペースが4つ以上含まれる場合)

    当方、日本語をインストールしていますが、
    WPのバージョンは問わずブロックエディターで起こります。

    ClassicEditorのサポートには期限がありますし、
    公式ではGutenbergを推しているわけで、
    できればGutenbergに移行をしたいと思っています。
    だからといって、WAFを無効にし、
    セキュリティを下げるのは根本的な解決策ではないとも感じています。。。

    IPアドレスを指定してのWAFの誤検知を除外する方法がありますが、
    試したのですが、事象は代わりませんでした。

    このような事象に対してみなさんがどのように対処しているのか、
    何か打開策がないか、うかがいたくここに投稿しました。
    ご意見、対処方法などありましたら教えていただけますと嬉しいです。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • shokun0803

    (@shokun0803)

    miwarock777さん、こんにちは。

    そのような事象に当たったことはないですが、状況から考えられることは想定している通り WAF でしょう。
    どの WAF を利用されているのか分かりませんが、大抵の WAF には WordPress 向けのホワイトリストが用意されていると思います。
    WAF を無効化してその他の条件で投稿がうまくいくのであればまず間違いなく WAF の設定の問題でしょうから、WAF を提供しているサービスに問い合わせるか、該当 WAF のフォーラム等を当たってみるといかがでしょうか。

    ご参考になれば。

    munyagu

    (@munyagu)

    こんにちは

    「返答が正しい JSON レスポンスではありません。」、と表示された場合に、私なら直接的にはブラウザのデベロッパーモードのネットワークタブでどのようなレスポンスなのかを確認します。

    大抵は JSON が返ってきていなくて何らかのエラーメッセージが返ってきています。
    WAF の何らかのメッセージなのかもしれませんし、PHP のエラーメッセージかもしれません。

    あるいは、サーバー上のエラーログを見ます。

    そのようなことをするのが難しいのであれば、問題解決のためのチェックリストに書かれていることを試します。

    トピック投稿者 miwarock777

    (@miwarock777)

    @shokun0803さん
    @munyaguさん
    コメントありがとうございました。

    レスポンスメッセージは、
    /wp-includes/js/dist/api-fetch.min.js?ver=XXXXXXXX
    でのエラーにより、
    /wp-json/wp/v2/[カスタム投稿スラッグ]/[POST ID]?_locale=user
    が403
    というものでした。

    また、「問題解決のためのチェックリスト」も試してみました。

    共用レンタルサーバーを利用している場合、サーバー会社から提供されるWAFのコントロールパネルはないことが多く(設定できるのは有効/無効の切り替えのみ)、またシグネチャを公開していないところもあります。
    また、これは記事(投稿)のIDによってシグネチャが変わるので、シグネチャを指定しての除外も現実的ではないな、、、と感じている次第です。

    いろいろ試しているなかで、もうひとつ分かったことがあったので共有させていただきます。
    通常の投稿ではこのような事象は起きず、カスタム投稿でだけ、でした。

    ◯WAF(SiteGuard Edition)有効
    ◯カスタム投稿
    ◯Gutenbergブロックエディターを使用
    ◯英文を入力(半角スペースが4つ以上含まれる場合)
    以上の条件が揃うようなことはそうそうないとは思うので、
    ・設定のカスタムが行えるWAFを導入する
    ・固定IPアドレスでのWAFの除外
    ・カスタム投稿ではREST APIを無効にする(=ブロックエディタを使わない)
    というところで検討しつつ、対処するしかないのかな、と思っています。
    (しかし、なぜ投稿では起きなくて、カスタム投稿でだけ起きるのか、、、、不思議です。)

    • この返信は10ヶ月前にmiwarock777が編集しました。
    munyagu

    (@munyagu)

    403 ですと間違いなく WAF でしょう。
    検討されている対策をおすすめになるしかないと思います。

    miwarock777さん、こんにちは。

    私も意見は munyagu さんと同じです。

    しかし、なぜ投稿では起きなくて、カスタム投稿でだけ起きるのか、、、、不思議です。

    おそらくですが、レンタルサーバー側が用意している WordPress 用の設定がカスタム投稿にまで及んでいないのでしょう。
    WAF の設定画面がないのであれば他の対策を進めて頂くのがよろしいかと存じます。

    ご参考になれば。

    @miwarock777 さん

    こんにちは。
    気になったのですが、

    ◯WAF(SiteGuard Edition)有効
    ◯カスタム投稿
    ◯Gutenbergブロックエディターを使用
    ◯英文を入力(半角スペースが4つ以上含まれる場合)

    →この条件は間違いありませんか?

    もし正しいとした場合、例えば

    • WAFを停止する
    • 英文を半角スペース3つ以内にする

    のいずれかの対応を行うだけで正常に作動する事になりますが、合っていますでしょうか。

    個人的には、その条件の場合のみREST API通信が出来なくなるケースというのは聞いた事がありませんので、もう一度正確な再現条件を確認されてみる事をお勧めします。

    また、JSONレスポンスエラーになっているという事は、サーバ側にPHPレベルでのエラーが記録されている可能性もありますので、一度ご確認下さい。

    トピック投稿者 miwarock777

    (@miwarock777)

    @shokun0803
    コメントありがとうございました。
    回答が遅くなってしまい申し訳ありません。
    その後、どのような場合に起こるのか、その検証を行っておりました。

    おそらくですが、レンタルサーバー側が用意している WordPress 用の設定がカスタム投稿にまで及んでいないのでしょう。

    おっしゃるとおりですね、、、、
    レンタルサーバー側にも一度問い合わせしたいと思います。

    トピック投稿者 miwarock777

    (@miwarock777)

    @wildworks

    コメントありがとうございました。回答が遅くなってしまい申し訳ありません。

    `→この条件は間違いありませんか?

    もし正しいとした場合、例えば

    WAFを停止する
    英文を半角スペース3つ以内にする
    のいずれかの対応を行うだけで正常に作動する事になりますが、合っていますでしょうか。`

    はい、WAFを停止すれば問題なく投稿できます。

    英文を入力(半角スペースが4つ以上含まれる場合)

    これについては、曖昧なところもあったので、コメント頂戴した後、今一度検証してみました。
    また、サーバー側のエラーログも調べました。

    そして、一部訂正させていただきます。

    お教えいただき、サーバー側のエラーログも調べてみたところ、
    SQLインジェクションからの防御9(or…=, and…=)
    との記載がありました。

    よって、再現条件は、
    ◯WAF(SiteGuard Edition)有効
    ◯カスタム投稿
    ◯Gutenbergブロックエディターを使用
    ●英文にjavascriptの式でや演算子のコードが英単語として入っている場合
    だと思われます。
    例えば、and、or、true、false、function などです。
    他にも再現条件があるかもしれません。

    英文入力の場合、andやorは使う場面が多いでしょうから、
    困ったな、と思っています。。。

    • この返信は8ヶ月、 1週前にmiwarock777が編集しました。
8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「ブロックエディターのJSONレスポンスのエラー」には新たに返信することはできません。