(1) PHP のセーフ モードをオンにする
PHP のセーフ モードは非常に重要な組み込みのセキュリティ メカニズムであり、system()、
などの PHP の一部の関数を制御できます。多くのファイル操作関数の権限を制御し、/etc/passwd などの特定のキー ファイルも許可しません
しかし、デフォルトの php.ini はセーフ モードをオンにしないため、これをオンにします:
safe_mode = on
(2) ユーザーグループのセキュリティ
safe_mode がオンで、safe_mode_gid がオフの場合、php スクリプトはファイルにアクセスでき、同じ
グループ内のユーザーもファイルにアクセスできます。
次のように設定することをお勧めします:
safe_mode_gid = off
これが設定されていない場合、
ファイルを操作する必要がある場合など、サーバー Web サイトのディレクトリ内のファイルを操作できない可能性があります。
(3) セーフ モードでプログラムを実行するためのホーム ディレクトリ
セーフ モードがオンになっているが、特定のプログラムを実行したい場合は、プログラムを実行するためのホーム ディレクトリを指定できます:
safe_mode_exec_dir = D:/usr/bin
通常、プログラムを実行する必要はないため、システム プログラム ディレクトリを実行しないことをお勧めします。
次に、実行する必要があるプログラムをコピーします (例:
safe_mode_exec_dir)。 = D:/tmp/cmd
ただし、プログラムは実行しないことをお勧めします。その場合は、Web ページのディレクトリを指定できます:
safe_mode_exec_dir = D:/usr/www
(4) ファイルをセーフ モードでインクルードします
特定のファイルをセーフ モードのパブリック ファイルに含めたい場合は、オプションを変更します:
safe_mode_include_dir = D:/usr/www/include/
実際、通常、php スクリプトに含まれるファイルはプログラムに記述されています。これは特定のニーズに応じて設定できます。
(5) PHP スクリプトがアクセスできるディレクトリを制御する
open_basedir オプションを使用して、PHP スクリプトが指定されたディレクトリにのみアクセスできるように制御します。これにより、PHP スクリプトがアクセスすべきではないファイルにアクセスするのを防ぎ、害を制限できます。 phpshell をある程度使用して、通常は Web サイトのディレクトリにのみアクセスするように設定できます:
open_basedir = D:/usr/www
(6) 危険な機能をオフにする
セーフモードがオンになっている場合は、次の関数を実行します。禁止する必要はありませんが、安全のために考慮する必要があります。たとえば、
コマンドを実行できる system() などの php 関数、または
phpinfo() や php 情報を表示できるその他の関数を実行したくない場合は、それらを無効にすることができます:
disable_functions = system ,passthru,exec,shell_exec,popen,phpinfo
ファイルやディレクトリの操作を禁止したい場合は、多くのファイル操作を閉じることができます
disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen, unlink ,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown
上記は、一般的に使用されないファイル処理関数のリストにすぎません。上記の実行コマンドを組み合わせることもできます。この関数と関数を組み合わせると、
はほとんどの phpshell に耐えることができます。
(7) http ヘッダーの PHP バージョン情報の漏洩をオフにする
ハッカーがサーバー内の PHP バージョン情報を取得するのを防ぐために、http ヘッダーの情報の漏洩をオフにすることができます:
Expose_php = Off
例えば、ハッカーは Telnet を使用します。 www.shilicn.com が 80 の場合、PHP 情報を見ることができなくなります。
(8) グローバル変数の登録をオフにする
PHP で送信された変数 (POST または GET を使用して送信された変数を含む) は、グローバル変数として自動的に登録され、直接アクセスできます
これはサーバーにとって非常に安全ではありません。グローバル変数として登録させることはできないので、グローバル変数の登録オプションをオフにします:
register_globals = Off
もちろん、このように設定されている場合は、取得時に合理的な方法を使用する必要があります。 GET var で送信された変数を取得するなど、対応する変数を取得するには $_GET['var'] を使用する必要があります。PHP プログラマはこれに注意する必要があります。
(9) SQLインジェクションを防ぐためにmagic_quotes_gpcをオンにする
SQLインジェクションは、小さい場合にはWebサイトのバックエンドに侵入され、深刻な場合にはサーバー全体が崩壊する非常に危険な問題です
ので注意してください。 php.ini には次の設定があります:
magic_quotes_gpc = Off
これがオンになっている場合、ユーザーが送信した SQL クエリが自動的に変換されます
たとえば、' を ' に変換します。これにより、SQL インジェクションが重要な役割を果たすことがなくなります。したがって、次のように設定することをお勧めします:
magic_quotes_gpc = On
(10) エラー メッセージ制御
一般に、php はデータベースに接続されていない場合、またはその他の状況下ではエラーを表示します。 php スクリプトの場合
以前のパス情報やクエリ SQL ステートメント、その他の情報は、この種の情報がハッカーに提供された後は安全ではないため、通常はサーバーでエラー プロンプトを無効にすることをお勧めします:
display_errors = Off
エラーを表示したい場合警告の上の情報のみを表示するなど、表示エラーのレベルを必ず設定してください:
error_reporting = E_WARNING & E_ERROR
もちろん、それでもエラー プロンプトをオフにすることをお勧めします。
(11) エラーログ
サーバー動作の原因を見つけやすくするために、display_errors をオフにしてエラー情報を記録することをお勧めします:
log_errors = On
同時に、次のディレクトリも設定する必要があります。エラー ログが保存されます。Apache ログを root にすることをお勧めします:
error_log = D:/usr/local/apache2/logs/php_error.log
注: ファイルは、Apache ユーザーとグループに許可する必要があります。書き込み権限を持っています。
制限された権限で実行される MYSQL
mysqlstart のような新しいユーザーを作成します
net user mysqlstart ****microsoft /add
net localgroup users mysqlstart /del
どのグループにも属しません
MYSQL がインストールされている場合d:mysql で、mysqlstart にフル コントロール権限を与えます
次に、システム サービスで MYSQL サービス プロパティを設定し、このユーザー mysqlstart を選択し、パスワードを入力します。
MYSQL サービスを再起動すると、MYSQL は低い特権で実行されます。
Apache が Windos プラットフォーム上に構築されている場合、Apache はデフォルトでシステム権限で実行されるため、非常に不快に感じます。次に、Apache の権限を下げてみましょう。
net user apache ****microsoft /add
net localgroup users apache /del
ok どのグループにも属さないユーザー apche を作成しました。
コンピューターマネージャーを開き、サービスを選択し、Apacheサービスのプロパティをクリックし、ログオンを選択し、このアカウントを選択し、上で作成したアカウントとパスワードを入力します。
Apacheサービスを再起動します。OK、Apacheが実行されます低い権限で降りました。
実際、Apache ユーザーが実行したいことのみを実行できるように各フォルダーの権限を設定し、ディレクトリごとに個別の読み取り/書き込みユーザーを作成することもできます。
これは、多くの仮想ホストプロバイダーで使用されている一般的な構成方法でもありますが、これを防ぐために使用すると過剰になります。 (http://www.65066.com.cn)