PHP が Apache モジュールとしてインストールされると、Apache ユーザー (通常は「nobody」) の権限を継承します。これは、セキュリティと認証にいくつかの影響を及ぼします。たとえば、PHP を使用してデータベースにアクセスする場合、データベースに独自のアクセス制御がない限り、「nobody」ユーザーがデータベースにアクセスできる必要があります。これは、悪意のあるスクリプトがユーザー名とパスワードを提供しなくてもデータベースにアクセスして変更できることを意味します。 Web スパイダーがデータベースの管理ページに遭遇し、すべてのデータベースを削除する可能性は十分にあります。この問題は、Apache 認証を通じて回避するか、LDAP、.htaccess などのテクノロジを使用して独自のアクセス モデルを設計し、これらのコードを PHP スクリプトの一部として使用することができます。
通常、セキュリティが PHP ユーザー (ここでは Apache ユーザー) が負うリスクが最小限になるレベルに達すると、PHP はユーザー ディレクトリへのファイルの書き込みを禁止したり、データベースへのアクセスや変更を禁止したりするレベルに達している可能性があります。 。これは、正常なファイルであっても異常なファイルであっても、正常なデータベース トランザクションであっても悪意のあるリクエストであっても、拒否されることを意味します。
セキュリティに悪影響を与えるよくある間違いは、Apache に root 権限を与えたり、他の手段で Apache により強力な機能を与えたりすることです。
Apache ユーザーの権限を root に昇格させることは非常に危険であり、システム全体のセキュリティを危険にさらす可能性があります。したがって、セキュリティの専門家でない限り、su、chroot の使用、または root 権限での実行を決して検討しないでください。
さらに、より簡単な解決策がいくつかあります。たとえば、open_basedir を使用して、PHP で使用できるディレクトリを制限できます。 Apache 固有のゾーンを設定して、すべての Web アクティビティを非ユーザー ファイルおよび非システム ファイルに制限することもできます。