リスクは何ですか?
構成が不十分な共有ホストでは、すべての顧客のPHPが同じユーザーとして実行されます(apache
議論のために言いましょう)。このセットアップは驚くほど一般的です。
このようなホスト上で、WordPressを使用して直接ファイルアクセスを使用してプラグインをインストールする場合、すべてのプラグインファイルはに属しますapache
。同じサーバー上の正当なユーザーは、プラグインファイルに悪意のあるコードを挿入するPHPスクリプトを作成することで、あなたを攻撃することができます。彼らは自分のウェブサイトにスクリプトをアップロードし、そのURLをリクエストします。apache
プラグインは、プラグインファイルを所有しているのと同じスクリプトとして実行されるため、コードは正常に侵害されます。
何んFS_METHOD 'direct'
それを行う必要がありますか?
WordPressがファイル(プラグインなど)をインストールする必要がある場合、get_filesystem_method()関数を使用してファイルシステムにアクセスする方法を決定します。定義しない場合FS_METHOD
はデフォルトが選択されますが、そうでない場合は、意味がある限り選択が使用されます。
デフォルトの動作では、上記のような危険な環境にあるかどうかを検出しようとし、安全であると思われる場合は'direct'
メソッドを使用します。この場合、WordPressはファイルをPHP経由で直接作成し、apache
ユーザーに属します(この例では)。そうでない場合は、SFTP資格情報の入力を求めたり、ファイルを作成したりするなど、より安全な方法にフォールバックします。
FS_METHOD = 'direct'
WordPressにリスクのある検出をバイパスし、常に'direct'
メソッドを使用してファイルを作成するように要求します。
次に、なぜ使用しFS_METHOD = 'direct'
ますか?
残念ながら、リスクのある環境を検出するためのWordPressのロジックには欠陥があり、偽陽性と偽陰性の両方を生成します。おっと。このテストでは、ファイルを作成し、そのファイルが存在するディレクトリと同じ所有者に属していることを確認します。ユーザーが同じ場合、PHPは自分のアカウントとして実行され、プラグインをそのアカウントとして安全にインストールできると仮定しています。それらが異なる場合、WordPressはPHPが共有アカウントとして実行されていると想定し、そのアカウントとしてプラグインをインストールすることは安全ではありません。残念なことに、これらの仮定はどちらも教育的な推測であり、しばしば間違っています。
次のdefine('FS_METHOD', 'direct' );
ような誤検知シナリオで使用します。あなたは、信頼できるチームの一員であり、メンバー全員が自分のアカウントを介してファイルをアップロードします。PHPは、独自の別個のユーザーとして実行されます。WordPressは、これがリスクのある環境であると想定し、デフォルトでは'direct'
モードになりません。実際には、信頼できるユーザーとのみ共有され、そのような'direct'
モードは安全です。この場合、define('FS_METHOD', 'direct' );
WordPressにファイルを直接書き込むように強制するために使用する必要があります。