News」ウィジェットが興味深い日本語が含まれていないコメントを無効化する管理画面の'アイキャッチ画像'を'写真'に変える購読者は管理者ページのアクセス禁止この記事は最後に更新してから1年以上経過しています。先月末にリリースされたバージョン5.4.1のアップデートにより、一部のサイトで投稿ページが従来通りに表示されなくなる不具合が発生し、サポートサイトにレポートが上がりました。この件について、ちょっとモヤモヤしたので自分なりに考えてみました。5.4.1」のセキュリティ更新にある「特定のプライベートな投稿が認証されていない状態で閲覧できてしまう問題」の対処が影響している。具体的には、投稿のパーマリンクに(投稿日時)の年月日時分秒パラメータをすべて設定していた場合、5.4.0までは投稿ページのテンプレート(single.phpなど)が適用され、そこで同じ投稿日時の投稿をすべて表示するようになっており、その中にはプライベートな投稿も含まれる可能性があった。このセキュリティ問題が発生する主な条件は2つだと思う。公開している投稿情報とプライベートな投稿情報の投稿日時が同一で、公開している投稿情報の投稿IDがプライベートな投稿情報の投稿IDよりも小さい(IDの関係が逆の場合は404になる)投稿ページのテンプレートで投稿情報をループして出力(表示)投稿編集ページでは、投稿日時の「年月日時分」を設定可能だが、「秒」はできない。このため、データベースを直接操作するかプラグラムで意識的に設定しない限り同一の投稿日時を設定するのは難しい。投稿ページのテンプレートのループ処理に関しては、標準テーマのTwentyシリーズが伝統的に採用しており、それらのテーマを参考に作られているテーマも多数あると思われるため多くのサイトがこの問題を抱えていた。ユーザーのリクエストURLについては、パーマリンクに設定されたものだけでなく、クエリーパラメータに年月日時分秒のすべてが指定された場合も同様の問題が発生する。修正内容はシンプルで、これまではクエリーパラメータに年月日時分秒のすべてが指定された場合はis_singleフラグがtrueになっていたが、この修正によりis_singleフラグ(プロパティ)は初期値のままfalseとなる。バージョンアップ前後で影響を受けたテンプレート判定用フラグは次の通りである。trueほかの修正プランはなかったのか?上記の対応により、投稿情報を出力するためのテンプレートは、投稿ページ用ではなく、アーカイブページ用が適用されるようになり、そこにはプライベートな投稿情報は出力されない。これで今回の問題は解決といえるのかもしれないが、そもそもis_singleフラグがtrueの場合になぜプライベートな投稿情報を表示される状況になっていたのか。その理由が気になったので、class-wp-query.phpのソースコードに目を通すことにした。原因と思われる個所は、get_postsメソッドにあった。);}}ここでは検索できた1件目の投稿情報のみを評価しており、2件目以降はスルーされている。これにより、プライベートな投稿情報が1件目の場合は404ページに、2件目以降の場合はそれらの投稿情報は維持され、結果的に未認証でも閲覧できることになった。今回の問題の原因はここにある。先の修正内容は、ここでの処理を回避するためにis_singleフラグをtrueにしないということのようだ。1件目と同様の処理を2件目以降も行っても問題を対処できる。このような代案があることを踏まえ、今回の修正に至った経緯が少し気になった。)テキスト内のURLを抽出する。)コンテンツ内の抜粋に適したブロックをレンダリングする。)ユーザー数が多いかを判定する。)ハッシュ用のソルトを取得する。)最大メモリー使用量を増やす。©12NetWordPress私的マニュアル主にjQueryのメモPHPExcelのノートWebの。