私たちは学習しています 1. 引用符で区切られた文字列 (「foo」など)
2. 数値 (0、1、34、-1、33.55 など)
3. PHP 定数 (例: E_ALL、M_PI)
4. INI 定数 (On、Off、none)
5. 式 (例: E_ALL & ~E_NOTICE)
ブール値を設定するものもあります。 、1 はオンを意味し、0 はオフを意味します。 php.ini は、モジュール部分、PHP グローバル設定、データベース設定などの多くの部分に分かれています。基本概念を理解したら、異常な構成の旅を始めることができます。
最初の重要なパラメータは register_globals です。この設定は、PHP が渡されたパラメータを受け取る方法に影響します。つまり、 register_globals はグローバル変数として登録することを意味するため、パラメータが On の場合、渡された値はグローバルとして直接登録されます。パラメータ値が Off の場合は、特定の配列から値を取得する必要があります。 www.milw0rm.com にある多数の PHP 脆弱性から判断すると、そのほとんどは Register_Globals が On のときに悪用されるため、現在の最新バージョンの PHP では、このパラメータはデフォルトで Off に変更することを強くお勧めします。使用しているバージョンが古い場合は、ここで変更する必要があります。
2 番目の重要なパラメータは、magic_quotes_gpc です。 magic_quotes_gpc を Off に設定すると、PHP は ' (一重引用符)、" (二重引用符)、(バックスラッシュ) およびヌル文字の 4 つの文字をエスケープしないため、サーバーが不正に挿入される可能性があります。 Magic_quotes_gpc を On に設定すると、上記の 4 つの文字が存在する場合、PHP は $_POST、$_GET、および $_COOKIE によって送信された変数にバックスラッシュを追加します。これにより、Magic_quotes_gpc を設定することを強くお勧めします。
3 番目のより重要なパラメータは、display_errors です。このパラメータが重要なのは、開発者がこれらのエラーを見つけて判断することができないためです。たとえば、PHP によって提供された情報がハッカーによって学習された場合、特定の財務 Web サイトに display_errors が設定されていないため、Web ディレクトリが漏洩する可能性があります。これは、多くの場合、Web ディレクトリを知る必要があるためです。したがって、このパラメータを Off に設定することを強くお勧めします。セーフ モードは、PHP の非常に重要な組み込みのセキュリティ メカニズムです。 system() やその他の関数など、PHP の一部の関数を制御します。また、多くのファイル操作関数のアクセス許可も制御し、/etc/passwd などの特定の主要なファイルへのアクセスを許可しませんが、デフォルトの php.ini は許可されません。セーフ モードをオンにするのではなく、safe_mode = on にします。
5 番目のパラメーターは open_basedir で、スクリプトは指定されたディレクトリにのみアクセスできます。通常は Web サイトのディレクトリにのみアクセスするように設定できます (Web サイトのディレクトリが E:test であると仮定します)。 open_basedir = E:test 6 番目のパラメータは disable_functions です。 disable_functions を使用すると、システムにとって非常に危険な機能を制限できます。たとえば、最初の部分で見た PHPinfo() 関数を使用して Web ページ内の PHP について確認できます。system、exec、およびを使用することもできます。システム コマンドなどを実行するためのその他の関数。 ここでは、次のフィルタリング関数をお勧めします: disable_functions = PHPinfo、passthru、exec、system、chroot、scandir、chgrp、shell_exec、proc_open 、proc_get_status、ini_alter、ini_alter、ini_restore、dl、pfsockopen、 openlog、syslog、readlink、symlink、
popepassthru、stream_socket_server。 特定の機能がわからない場合は、Google で検索してその機能の内容を調べ、自分のサーバーでその機能を禁止するかどうかを決定できます。
7 番目のパラメーターは Com コンポーネントです。 Windows プラットフォームの PHP スクリプト プラットフォームにはセキュリティ上の脆弱性があり、PHP 設定がセーフ モード (safe_mode) であっても、攻撃者が COM() 関数を使用してシステム コンポーネントを作成し、任意のコマンドを実行することができます。この脆弱性の理由は、セーフ モードの PHP プラットフォームでは system(); pathru() 関数が禁止されているにもかかわらず、com.allow_dcom の設定が依然として true であることです。そのため、攻撃者は COM() 関数を使用してシステム コンポーネント オブジェクトを作成し、システム コマンドを実行できます。
デフォルトの Apache 設定が使用されている場合、または Web サーバーがローカルシステム権限または管理者権限で実行されている場合、攻撃者はこの脆弱性を利用して権限を昇格させる可能性があります。したがって、デフォルトでは True である com.allow_dcom パラメータをオフにする必要があります。このパラメータを com.allow_dcom=false に変更する必要があります。 8 番目のパラメータは Expose_PHP です。このパラメータは、公開された PHP がサーバーにインストールされているかどうかを決定します。このパラメータを On に設定すると、PHP のバージョンなどが漏洩します。推奨値はオフです。
基本的なパラメータを紹介しました。もちろん、php.ini の設定のほとんどは、PHP の動作の影響 (最適化など) に関係しません。興味がある場合は、PHP の公式マニュアルを参照して詳細を確認してください。注: php.ini を変更した後は、IIS を再起動する必要があります。そうしないと、設定した内容がすぐに有効になりません。