ホームページ  >  記事  >  バックエンド開発  >  php_PHPチュートリアルのsafe_modeセーフモード設定の詳細な説明

php_PHPチュートリアルのsafe_modeセーフモード設定の詳細な説明

WBOY
WBOYオリジナル
2016-07-13 17:11:021531ブラウズ

php には通常モードとセーフ モードがあります。セーフ モードの設定後は多くの機能が制限されるため、ほとんどのユーザーはアプリケーションの通常モードを使用します。方法。

セーフモードをオンにすると、以下の機能リストの機能が制限されます:

chdir、move_uploaded_file、chgrp、parse_ini_file、chown、rmdir、コピー、名前変更、fopen、require、highlight_file、show_source、include、symlink、link、touch、mkdir、unlink

同様に、PHP 拡張機能の一部の関数も影響を受けます。 (モジュールのロード: dl 機能はセーフ モードでは禁止されます。拡張機能をロードしたい場合は、php.ini で拡張機能のオプションを変更し、PHP の起動時にロードするだけです)

PHP セーフ モードがオンになっている場合、オペレーティング システム プログラムを実行する必要がある場合は、safe_mode_exec_dir オプションで指定されたディレクトリ内のプログラムである必要があります。そうでない場合、実行は失敗します。実行が許可された場合でも、フィルタリングのために自動的にescapeshellcmd関数に渡されます。

コマンドを実行する次の関数のリストが影響を受けます:

exec、shell_exec、パススルー、システム、popen

また、バックタグ演算子(`)もオフになります。

セーフモードで実行した場合、エラーは発生しませんが、putenv関数は無効となります。同様に、PHP 環境変数を変更しようとする set_time_limit や set_include_path などの他の関数も無視されます。

1. すべての入出力関数 (fopen()、file()、require() など) の適用は制限され、これらの関数を呼び出すスクリプトと同じ所有者を持つファイルに対してのみ使用できます。たとえば、セーフ モードが有効になっていると仮定すると、Mary が所有するスクリプトが fopen() を呼び出し、Jonhn が所有するファイルを開こうとすると失敗します。ただし、Mary が fopen() を呼び出すスクリプトだけでなく、fopen() の呼び出し元のファイルも所有している場合は、成功します。
2. 関数 Popen()、system()、または exec() を介してスクリプトを実行しようとする場合、そのスクリプトがsafe_mode_exec_dir 構成ディレクティブで指定されたディレクトリにある場合にのみ可能です。
3. 検証スクリプトのユーザーの UID が検証フィールドに含まれるため、HTTP 検証がさらに強化されます。また、セーフ モードが有効な場合、PHP_AUTH は設定されません。
4. MySQL データベース サーバーを使用する場合、MySQL サーバーへの接続に使用するユーザー名は、mysql_connect() を呼び出すファイル所有者のユーザー名と同じである必要があります。


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:/tool/exe

ただし、プログラムを実行しないことをお勧めします。その場合は、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 = system,passthru,exec,shell_exec,popen,phpinfo

ファイルやディレクトリの操作を禁止したい場合は、多くのファイル操作を閉じることができます


disable_functions=chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,

コピー、mkdir、rmdir、名前変更、ファイル、file_get_contents、fputs、fwrite、chgrp、chmod、chown

上記は、一般的に使用されるファイル処理関数の一部を示したものです。
上記の実行コマンド関数を組み合わせることもできます。 ほとんどの phpshell に耐えることができます。


(7) httpヘッダー内のPHPバージョン情報の漏洩を遮断

ハッカーがサーバー内の PHP バージョン情報を取得できないようにするために、http ヘッダーの情報をオフにすることができます:

expose_php = オフ

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


(8) グローバル変数のクローズ登録

PHP で送信された変数は、POST または GET を使用して送信された変数も含め、グローバル変数として自動的に登録され、直接アクセスできます。 これはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。そのため、グローバル変数の登録オプションをオフにします:
register_globals = オフ
もちろん、これが設定されている場合は、GET によって送信された変数 var を取得するなど、適切な方法を使用して対応する変数を取得する必要があります。 PHP プログラマは、これを取得するために $_GET['var'] を使用する必要があります。

(9) SQLインジェクションを防ぐためにmagic_quotes_gpcをオンにする


SQL インジェクションは、Web サイトのバックエンドに侵入したり、サーバー全体がダウンしたりする可能性がある非常に危険な問題です。

だから気をつけてね。 php.ini に次の設定があります:

magic_quotes_gpc = オフ

これはデフォルトではオフになっています。オンにすると、ユーザーが送信した SQL クエリが自動的に変換されます。 たとえば、' を ' に変換するなど、SQL インジェクションの防止に重要な役割を果たします。したがって、次のように設定することをお勧めします:

magic_quotes_gpc = オン


http://www.bkjia.com/PHPjc/629618.html

www.bkjia.com

http://www.bkjia.com/PHPjc/629618.html技術記事 PHP には通常モードとセーフ モードがあります。現在、ほとんどのユーザーはアプリケーションの PHP 通常モードを直接使用しています。これは、セーフ モードが設定されると多くの機能が影響を受けるためです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。