サポート » バグ報告と提案 » wordpress 5.4.1 からの障害について

  • 解決済 m0de

    (@m0de)


    WordPress 5.4.1 に自動アップグレードが入りましたが、個別記事(single.php)が表示されなく
    なってしまいました。

    推測すると、日時をパーマリンクに使っていると発生している可能性があります。
    5.4迄の場合、「/%second%」まで入っているとアーカイブ判定されなかったのですが、今回から判定されてしまっている感じです。

    パッチノートをざっと覗いた限り記載が無かったのですが仕様でしょうか。
    (パーマリンクを「post_id」にてテストしたところ、「single.php」が通常通り表示されました。)

    ご教示頂けると幸いです。

    ブラウザ変更や、プラグインオフ、キャッシュクリア等は試しました。

15件の返信を表示中 - 1 - 15件目 (全20件中)
  • 具体的に今まで利用していたパーマリンクは「/%year%/%monthnum%/%day%/%hour%%minute%%second%/」となります。

    試しに5.4にダウングレードしたところ、ちゃんと「dingle.php」が表示されました。

    ドキュメントには、IDかスラッグを入れる、という説明がありますね。

    https://ja.wordpress.org/support/article/using-permalinks/

    構造は必ず %post_id% あるいは %postname% で終了し、各パーマリンクが個々の投稿を指すようにしてください (例 /%year%/%monthnum%/%day%/%postname%/ )。

    なので、

    「/%year%/%monthnum%/%day%/%hour%%minute%%second%/」となります。

    ↑のパーマリンク設定は好ましくない(今までは、運良く動いていた)、ということになりそうです。

    マイナーバージョンアップで変更するのは、理解しずらいですが、
    もしかしたら何処かの修正で、パーマリンク設定を厳密にする必要が生じたのかもしれませんね。

    • この返信は3ヶ月、 2週前に水野史土が編集しました。
    • この返信は3ヶ月、 2週前に水野史土が編集しました。

    水野様

    ありがとうございます。最新ドキュメントを拝見し、ダッシュボードも確認したところ日付のパーマリンクは
    選択ラジオボックスからも無くなって(以前はあった気がする?)いました。

    サイレント修正なのか、今回のセキュリティ対応に伴う厳格化なのかは不明瞭ですが、「実質ユニーク」は許容されなくなり、「確実なユニーク」を担保してきたのかもしれませんね。

    少しの間、5.4 にダウングレードして、パーマリンクをリダイレクトかけた上で修正するか、funcsions.php に 判定を記述して延命するかを検討したいと思います。

    元々一手間(スラッグの英語化)を嫌ったのと、POST_IDの飛び番がいやだったので、便利だったんですけどしかたがないですね(笑

    サイレント修正なのか、今回のセキュリティ対応に伴う厳格化なのかは不明瞭ですが、「実質ユニーク」は許容されなくなり、「確実なユニーク」を担保してきたのかもしれませんね。

    私もコードまでは見ていないのですが、

    このパーマリンク設定を使い続けたいのであれば、
    WordPress本体の開発に参加していく(or開発に参加しているウェブ制作会社に依頼する)
    などを検討したほうが良さそうに思います。
    それでも却下されるかもしれないですが。

    コアのコードを見てきました。

    Query: Ensure that only a single post can be returned on date/time based queries.

    https://core.trac.wordpress.org/changeset/47641

    もし、どうしても今までのパーマリンク設定を使いたいなら、ここに反論をする必要がありますね。

    ありがとうございます。
    私自身も解析してたところですが、助かりました。

    仕様厳密にしてきたのですね。
    運用でカバーする方針なので、解決できてスッキリしました。

    大変助かりました。ありがとうございましたっ

    captain-karaage

    (@captain-karaage)

    こんばんは。からあげ隊長と申します。

    昨日、m0de (@m0de)さんと全く同じ症状が出て、一時サイトが個別記事が表示されなくなっていました。
    プラグインでバージョンダウンをして、とりあえず元のように表示されるようになりました。
    自動更新をOFF設定にして不具合発生を抑えているところです。

    パーマリンク設定
    カスタム構造 /%year%/%monthnum%/%day%/%hour%%minute%%second%/

    すみませんが、WordPress初心者の私にも分かるように、パーマリンクの修正方法をご教授して頂けないでしょうか。詳しくは検索します。よろしくお願いします。

    captain-karaage

    (@captain-karaage)

    追加情報です。

    現在、多数の記事が検索上位表示されている状態なので、パーマリンクを変更したくはありません。
    できればSEO評価をリセットしたくありません。
    個別記事は1,400を越えていますので、リダイレクトの手動設定はやりたくありません。
    内部リンクも多数あります。

    なんとかパーマリンクを維持できないものでしょうか。

    captain-karaage

    (@captain-karaage)

    考えれば、考えるほど頭が痛くなってきます。

    自分でなんとか解決します。

    おそらくパーマリンクを変更することになるでしょう。今後のバージョンアップでも、不具合が解消される見込みはなし。
    コツコツ、分割して少しずつやろうと思います。

    一気にやるとアクセス数が激減して、大変なことになることが予想されます。

    では、どうもありがとうございました。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    他のトピックにも回答しましたが、参照する人が多そうなのでこちらにも転記します。
    この変更がなされた理由について、@ishitaka さんがTwitterで以下の情報を教えてくださいました。

    Unpacking The 7 Vulnerabilities Fixed in Today’s WordPress 5.4.1 Security Update
    https://www.wordfence.com/blog/2020/04/unpacking-the-7-vulnerabilities-fixed-in-todays-wordpress-5-4-1-security-update/

    This indicates that it was possible for an attacker to view private posts by using date and time-based queries, though only for protected posts that were created or updated at the exact same time, down to the second, as an unprotected post.

    また、英語版フォーラムで、コミッターご本人からの回答もありました。
    https://wordpress.org/support/topic/why-class-wp-query-php-was-changed-in-wordpress-5-4-1/

    2つの情報をまとめると、同じ日付/時間/分/秒で公開された複数の投稿が存在する可能性があるためクエリ判定条件として適切ではないこと、また実際に複数の投稿があって2件目以降に非公開記事があった場合、非公開状態のものが見えてしまう問題があるための修正とのことです。

    セキュリティー上の問題がある以上、この変更が戻されることはないと思われますので、それぞれのブログの運用状況を考慮しつつパーマリンクの再検討はすべきかと思います。

    詳細なブログ記事を書いたので、詳しくは↓をごらんください。

    WORDPRESS 5.4.1 パーマリンク設定の厳密化により、情報漏洩脆弱性が改善された

    少なくとも、以下の条件で、情報漏洩が発生します。
    ■パーマリンク設定を日時だけにしている(= ID・スラッグなど一意にする項目が無い)
    ■同じ日時で、公開記事と非公開記事を投稿する

    captain-karaage

    (@captain-karaage)

    のむらけい (Kei Nomura) (@mypacecreator)さん
    水野史土 (@ounziw)さん

    おはようございます。
    丁寧な回答ありがとうございます。

    ウェブサイトを立ち上げた時、パーマリンクを毎回入力しなくても済むようにと年月日時にしました。
    当時は毎日更新していたため、多少の省力化できました。

    その後サイトを運営しているうちに、URLを見ただけでは記事内容を判別できない、という欠点を次第に感じるようになりました。
    パーマリンク変更をしたくなったのですが、軌道に乗ったサイトの変更は危険と判断しました。
    それで今までズルズルと先送りしてきたのでした。

    今現在はコロナの外出自粛で時間はたくさんあります。この時期に長年にわたる課題を片付けたいと思います。

    どうもありがとうございました。

    今回の件ですが、私も20年間「年月日時分秒」のパーマリンクでブログを書きづつけてきたので、大変ショックを受けています。

    対策ですが、ブログ記事数が少ないのであれば、パーマリンク設定を変更し、.htaccess に301リダイレクト設定をすれば検索結果への影響もないと思います。
    (Redirectionプラグインを使うのも良いと思います)

    ただ私の場合は数百件も記事がありますので、どうしようか頭を抱えているところです。
    年月日時分秒から該当する投稿を見つけてリダイレクトする設定を functions.php に書くしかないかなと思っています。

    個人的な単なる意見ですが、もしそうなった場合
    「/%year%/%monthnum%/%day%/%hour%%minute%%second%-%post_id%」
    へと ID を含めるようにし、パーマリンク設定をして、
    プラグインなどで前の URL からの閲覧者はリダイレクトするようにして対処しようと思います。

    ID やスラッグを入れればいいということなら、
    スラッグは大変な場合、いかに ID を入れるかがポイントになってくるのかもしれません。

    このフォーラムは解決済みなのにメモ書き失礼しました。

    何か具体的にこうすれば誰もが WordPress の構造的にも良い解決策が閃きましたら、どこかに書こうと思います。

    captain-karaage

    (@captain-karaage)

    こんばんは。

    サイトは元通り表示されるようになったものの、対処方法を考えていると頭が痛くなります。

    パーマリンク変更と301リダイレクトの設定は「custom permalinks」というプラグインを使用してやることにしました。

    https://www.nishi2002.com/25311.html

    こちらのサイトを見る限り、パーマリンクを変更した記事のみ設定が必要で、これまで投稿した記事については問題なく表示されるようです。
    「custom permalinks」のユーザー数とレビューを見ると、信頼性に疑問が残りますが、このほかに良さそうなプラグインは見当たりません。
    いつも頭を悩ませながら、WordPressを弄っている私は、プラグインに頼って今回の問題を乗り切ります。

    「Permalink Redirect」というプラグインは、パーマリンク変更を行ってから、リダイレクトの設定が終わるまでは404エラーが出て表示されないようです。
    現在の投稿数は1400で、1記事の設定に10分掛かるとすると、およそ230時間。一日10時間作業すると、23日必要です。
    問題はその間、404エラーが出続けてしまうことです。

    私としては完全手動でもいいので、パーマリンクの変更を行っている投稿だけ、404エラーが出るようにしたいです。一気にやろうと思うと疲れるので、毎日3~4時間ずつコツコツやっていくようにしたいです。

    ネットで検索しても、大量の記事のパーマリンクを変更した情報はありません。私が行って詳細をアップするようにします。

    始めから「Post name」にしておけば、今回のアップデートでも問題ありませんでしたし、今後もそのままで運営していくことができました。URL設定の手間を惜しんだばかりに、今回大きなツケを支払うことになってしまいました。
    今は苦しいですが、自分でやるしかありません。

15件の返信を表示中 - 1 - 15件目 (全20件中)
  • このトピックに返信するにはログインが必要です。