ホームページ  >  記事  >  バックエンド開発  >  PHPのセキュリティ問題を解決する方法

PHPのセキュリティ問題を解決する方法

(*-*)浩
(*-*)浩オリジナル
2019-09-19 15:26:073196ブラウズ

PHP セキュリティ構成

PHPのセキュリティ問題を解決する方法

##(1) PHP のセーフ モードをオンにする (学習することをお勧めします) : PHP プログラミングの入門から熟練度まで )

php のセキュリティ モードは、system() などの PHP の一部の関数を制御できる非常に重要な組み込みセキュリティ メカニズムです。ファイル操作関数はアクセス許可制御を実行し、/etc/passwd などの特定のキー ファイルを許可しませんが、デフォルトの php.ini はセーフ モードを開きません。 ##(2) ユーザー グループのセキュリティ

safe_mode がオンで、safe_mode_gid がオフの場合、php スクリプトはファイルにアクセスでき、同じグループ内のユーザーもファイルにアクセスできます。 これを設定することをお勧めします:

safe_mode = on

これを設定しないと、操作が必要な場合など、サーバー Web サイトのディレクトリ内のファイルを操作できなくなる可能性があります。ファイル。

(3) セーフ モードでプログラムを実行するためのホーム ディレクトリ

セーフ モードがオンになっているが、特定のプログラムを実行したい場合は、そのプログラムを次のように指定できます。ホーム ディレクトリ:

safe_mode_gid = off
通常、プログラムを実行する必要はないため、システム プログラム ディレクトリを実行しないことをお勧めします。ディレクトリを指定して、必要なプログラムをコピーできます。

safe_mode_exec_dir = D:/usr/bin

ただし、プログラムは実行しないことをお勧めします。その場合は、Web ディレクトリを指定できます:

safe_mode_exec_dir = D:/tmp/cmd

(4) ファイルを安全な場所に含めます。 mode

特定のパブリック ファイルをセーフ モードに含めたい場合は、オプションを変更します:

safe_mode_exec_dir = D:/usr/www
実際、通常、PHP スクリプトに含まれるファイルはプログラムで記述されています。これは、特定のニーズに応じて設定できます。

(5) PHP スクリプトがアクセスできるディレクトリを制御する

open_basedir オプションを使用して、PHP スクリプトが指定されたディレクトリにのみアクセスできるように制御します。これにより、PHP スクリプトがアクセスできないようになります。アクセスしてはいけないディレクトリへのアクセス アクセスされるファイルにより、phpshell の害はある程度制限されます 通常、Web サイトのディレクトリのみにアクセスするように設定できます:

safe_mode_include_dir = D:/usr/www/include/

(6) 危険な機能をオフにする

if セーフモードがオンになっている場合は機能禁止の必要はありませんが、安全性を考慮して機能禁止を考慮しております。たとえば、system() や phpinfo() などのコマンドを実行できる PHP 関数や、PHP 情報を表示できるその他の関数を実行したくない場合は、それらを禁止できます。ファイルおよびディレクトリの操作を禁止するには、多くのファイル操作を閉じることができます

open_basedir = D:/usr/www
上記は、よく使用されるファイル処理機能の一部を示したものです。また、上記の実行コマンド機能とこの機能を組み合わせることもできます。ほとんどの phpshell に耐えることができます。

(7) http ヘッダー内の PHP バージョン情報の漏洩を阻止する

ハッカーがサーバー内の PHP バージョン情報を取得するのを防ぐために、http ヘッダー内の PHP バージョン情報の漏洩を阻止します。 http ヘッダー内の情報の漏洩 ヘッダー内:

disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

たとえば、ハッカーが www.greatmo.com 80 に Telnet した場合、PHP 情報を見ることはできません。

(8) グローバル変数の登録をオフにする

PHP で送信された変数 (POST または GET を使用して送信された変数を含む) は、グローバル変数として自動的に登録され、ダイレクトすることができます。アクセスはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。そのため、グローバル変数の登録オプションをオフにします。

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

もちろん、これが設定されている場合は、対応する変数 GET で送信された変数 var を取得し、$_GET['var'] を使用して取得するなど、合理的な方法を使用する必要があるため、PHP プログラマはこの点に注意する必要があります。

(9) magic_quotes_gpc を開いて SQL インジェクションを防止します

SQL インジェクションは非常に危険な問題です。小規模な場合には Web サイトのバックエンドが侵入され、より深刻な場合には、 , サーバー全体が崩壊してしまうので注意が必要です。 php.ini には次の設定があります:

expose_php = Off

これはデフォルトではオフになっています。オンにすると、' を \' に変換するなど、ユーザーが送信したクエリが自動的に SQL に変換されます。これにより、SQL インジェクションによる大きな違いが生じなくなります。したがって、次のように設定することをお勧めします:

register_globals = Off

(10) エラー メッセージ制御

通常、PHP はデータベースに接続されていない場合、またはデータベースに接続されていない場合にエラーを表示します。その他の状況 一般的なエラー メッセージ これには、php スクリプトまたはクエリの SQL ステートメントの現在のパス情報が含まれます。この種の情報は、ハッカーに提供されると安全ではないため、通常はサーバーでエラー プロンプトを無効にすることが推奨されます。

magic_quotes_gpc = Off

の場合、エラー情報を表示するには、エラー表示のレベルを設定する必要があります。たとえば、警告の上の情報のみを表示します。

magic_quotes_gpc = On
もちろん、エラー プロンプトをオフにすることをお勧めします。 。

以上がPHPのセキュリティ問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。