APIを使用して、PHPが実行されているWebサーバーを操作する方法を探しています。
たとえば、.htaccess ファイルに触れることなく、mod 書き換えルールを動的に追加したり、特定のパスの IP アドレスをブロックしたりできるようにしたいと考えています。
このようなものはPHPに存在しますか?
PHP で Apache の構成を動的に変更することはできませんが、PHP を使用して構成を編集したり、.htaccess ファイルで構成をリロードしたりできます。しかし、Web アプリケーションに Web サーバーに対する強力な権限を与えることは、大きなセキュリティ リスクであると考えています。
IP を動的にブロックする例は、 mod_rewrite の RewriteMap ディレクティブで実行できます。基本的に、Web サイト用の mod_rewrite ルールを作成します。このルールは、mod_rewrite に、PHP スクリプトが維持できる外部データ ソースを参照するように指示します。
mod_rewrite のドキュメントには次の例があります:ブラックリストでホストを拒否する
説明: hosts.deny のように、ホストのブラックリストを維持したいと考えています。 それらのホストをサーバーへのアクセスからブロックします。 解決: RewriteEngine on RewriteMap hosts-deny txt:/path/to/hosts.deny RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [または] RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND RewriteRule ^ - [F] ## ## ホスト.拒否 ## ## 注意!これはマップであり、リストではありません。 ## mod_rewrite はキーと値のペアを解析するため、少なくとも ## ダミー値「-」は、各エントリに存在する必要があります。 ## 193.102.180.41 - bsdti1.sdm.de - 192.76.162.40 - 討論: 2 番目の RewriteCond は、HostNameLookups がオンになっていることを前提としています。 クライアントの IP アドレスが解決されるようにします。そうでない場合は、 2 番目の RewriteCond を削除し、[OR] フラグを削除する必要があります。 最初の RewriteCond。
PHP スクリプトでこれらのテキスト ファイルを維持でき (他のデータ ストアも利用可能)、アクセスを動的に制御する特定のニーズに合わせて任意の数のルールセットを作成できます。それはうまくいくでしょうか?