web-dev-qa-db-ja.com

私の子供用テーマFunctions.phpに{die}セキュリティが必要ですか?

私はPHPに慣れていませんが、すべてのPHPファイルにセキュリティスニペットがあることに気付きました。 私の質問 、それを安全にするために、子テーマfunctions.phpにもこのようなものが必要ですか?

PHP:

if ( ! defined( 'ABSPATH' ) ) {
    die( 'Direct Access Not Permitted' );
}
6
CSS Apprentice

need itですか?おそらくそうではありません( このEdgeの場合 、props @bravokeyl)。追加しますか?私の意見では、はい:

  1. コーディング/アーキテクチャのPOVから、あなたは「このファイルにはWordPressが必要だ」と宣言しています。
  2. あなたのテーマのファイル(好奇心旺盛なユーザー、ボット、「スクリプトキディ」など)に直接アクセスすると、わずかな情報(おそらくファイルシステム)が漏洩したり、エラーログが溢れたりする可能性があります(例:Undefined function get_header in /bada/bing/bada/boom)。
  3. 1)を繰り返し、それはちょうど良い習慣です。

しかし、私は絶対に 嫌い this:

die( 'Direct Access Not Permitted' );

IMOそれは単にあるべきです:

if ( ! defined( 'ABSPATH' ) )
    exit;

その「メッセージ」を持っていても意味がありません。そして私はexitの大ファンです。それは、これが expected の可能なシナリオであるという事実を伝え、そのシナリオでは、私は単にやめたいと思います。ファイルシステムの書き込みエラー、データベースエラーなどの「予期しない」シナリオにはdieを使用します。

6
TheDeadMedic

ほとんどの場合、子テーマでdefined( 'ABSPATH' )をチェックする必要はありません。

2
bravokeyl

いいえ、functions.phpはWordPress APIを使用しているため直接ロードされるとPHP fatalを生成します。

functions.phpがWordPressをブートストラップしてロードしようとした場合、はい、それは必要ですが、それをしたならば、何かが消えています ひどく間違っています そして、最初から始める必要があります

2
Tom J Nowell

エラー報告が正しく設定されていれば、WordPressファイルをほとんど(全部ではないにしても)直接ロードしても、死の白い画面にしかならないでしょう。これは致命的なPHPエラーが発生して実行が停止するためです。エラー表示のための正しいパブリック設定はそれらを表示しないことです。しかし、WordPressを使用していることを隠そうとしているか、少なくともできるだけ長い間使用している場合は、ifトリガー内で404応答コードをトリガーすることをお勧めします。

0
Liam Bailey