PHP 自体にはいくら古いものであってもいくつかの問題があります。たとえば、php4.3.10 や php5.0.3 より前にはいくつかの重大なバグがあったため、新しいバージョンを使用することをお勧めします。さらに、現在人気の SQL インジェクションは PHP 上でさまざまな方法で使用できるため、セキュリティを確保するには、PHP コードの記述も 1 つの側面であり、PHP の設定が非常に重要です。
PHP を手動でインストールしました。PHP のデフォルト設定ファイルは /usr/local/apache2/conf/php.ini にあります。最も重要なことは、PHP をより安全に実行できるように php.ini の内容を設定することです。 PHP全体のセキュリティ設定は主にphpshellとSQLインジェクションによる攻撃を防ぐためのものです。ゆっくり説明していきます。まず、編集ツールを使用して /etc/local/apache2/conf/php.ini を開きます。他の方法でインストールした場合は、設定ファイルがこのディレクトリにない可能性があります。
(1) phpのセーフモードをオンにする
php のセーフ モードは、system()、
などの php の一部の関数を制御できる非常に重要な組み込みセキュリティ メカニズムです。同時に、多くのファイル操作関数の権限が制御され、/etc/passwd などの特定の重要なファイルが許可されません。
ただし、デフォルトの php.ini ではセーフ モードが開かないので、セーフ モードを開いてみましょう:セーフモード = オン
(2) ユーザーグループのセキュリティ
safe_mode がオンになり、safe_mode_gid がオフになった場合、PHP スクリプトはファイルにアクセスできますが、それは同じです
グループのユーザーもファイルにアクセスできます。
推奨設定:
safe_mode_gid = オフ
これを設定しない場合、サーバー 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)危険な機能をオフにする
セーフモードがオンになっている場合、機能の禁止は必要ありませんが、安全性を考慮しております。たとえば、
コマンドを実行したり、php情報を表示したりできるsystem()を含むphp関数を実行する必要はないと考えています
phpinfo() およびその他の関数を禁止できます:
disable_functions = システム、パススルー、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 = オフ
たとえば、ハッカーが www.chinaz.com 80 に Telnet した場合、PHP 情報を見ることはできません。
(8) グローバル変数の登録を閉じる
PHP で送信された変数 (POST または GET を使用して送信された変数を含む) は、グローバル変数として自動的に登録され、直接アクセスできます。
これはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。そのため、グローバル変数の登録オプションをオフにします。register_globals = オフ
もちろん、これが設定されている場合は、GET によって送信された変数 var を取得するなど、適切な方法を使用して対応する変数を取得する必要があります。
その後、それを取得するには $_GET['var'] を使用する必要があります。PHP プログラマはこれに注意する必要があります。
(9) SQL インジェクションを防ぐために、magic_quotes_gpc をオンにします
SQL インジェクションは、Web サイトのバックエンドに侵入したり、サーバー全体がダウンしたりする可能性がある非常に危険な問題です。
だから気をつけてね。 php.ini に次の設定があります:magic_quotes_gpc = オフ
これはデフォルトではオフになっています。オンにすると、ユーザーが送信した SQL クエリが自動的に変換されます。
たとえば、「 を 」に変換するなど。これは SQL インジェクションを防ぐ上で重要な役割を果たします。したがって、次のように設定することをお勧めします:
magic_quotes_gpc = オン
(10) エラーメッセージ制御
通常、php はデータベースに接続されていない場合、またはその他の状況下でエラーを表示します。一般に、エラー メッセージには php スクリプトが含まれます
。前のパス情報やクエリ SQL ステートメントやその他の情報は、この種の情報がハッカーに提供された後は安全ではないため、通常はサーバーでエラー プロンプトを禁止することをお勧めします。
display_errors = オフ
エラー情報を表示したい場合は、エラー表示のレベルを必ず設定してください。たとえば、警告の上の情報のみを表示します:
error_reporting = E_WARNING & E_ERROR
もちろん、エラープロンプトをオフにすることをお勧めします。
(11) エラーログ
サーバーが実行されている理由を見つけるために、display_errors をオフにした後、エラー情報を記録することをお勧めします。
log_errors = オン同時に、エラー ログを保存するディレクトリも設定する必要があります。ルート Apache ログも一緒に保存することをお勧めします。
error_log = D:/usr/local/apache2/logs/php_error.log
注: このファイルでは、Apache ユーザーとグループに書き込み権限を与える必要があります。
権限を減らしたMySQL操作
mysqlstart などの新しいユーザーを作成します
ネット ユーザー mysqlstart ****microsoft /add
ネットローカルグループユーザーmysqlstart /del
どのグループにも属していません
MYSQL が d:mysql にインストールされている場合は、mysqlstart にフルコントロール権限を与えます
次に、システム サービスで MYSQL サービス プロパティを設定し、ログイン プロパティでこのユーザー mysqlstart を選択し、パスワードを入力して確認します。
MYSQL サービスを再起動すると、MYSQL は低い権限で実行されます。
Apache が Windos プラットフォーム上に構築されている場合、Apache はデフォルトでシステム権限で実行されることに注意する必要があります。
これは恐ろしいことです。これは人々を非常に不快にさせます。それなら、Apache の権限を下げましょう。
ネットユーザー apache ****microsoft /add
ネットローカルグループユーザー apache /del
わかりました。どのグループにも属さないユーザー apche を作成しました。
コンピューターマネージャーを開き、サービスを選択し、Apacheサービスのプロパティをクリックし、ログオンを選択し、このアカウントを選択し、上記で作成したアカウントとパスワードを入力します、
Apache サービスを再起動します。Apache は低い権限で実行されています。
実際、Apache ユーザーが実行したいことのみを実行できるように各フォルダーの権限を設定し、ディレクトリごとに個別の読み取り/書き込みユーザーを作成することもできます。
http://www.bkjia.com/PHPjc/629682.html