ウェブサイトのセキュリティとパフォーマンスは互いに矛盾しているようです。 php ウェブサイトの場合、選択は特に困難です。最も単純な例を挙げると、PHP 構成ファイルの open_basedir は、PHP が開くことができるファイルを、ファイル自体を含む指定されたディレクトリ ツリーに制限します。本来、これは Web サイトのセキュリティにとって非常に有益ですが、作成者がインターネットから入手した情報によると、open_basedir は PHP の IO 操作のパフォーマンスに大きな影響を与えるとのことです。調査データによると、php_basedir で構成されたスクリプト io の実行速度は、構成されていない場合の 10 倍以上遅くなります。
最初、私はこの結果をあまり信じていませんでしたが、テストデータを見てこの見方を認めるように確信しました。
簡単なスクリプトを作成します:
<?php functionmicrotime_float() { list($usec,$sec) =explode(" ", microtime()); return((float)$usec+ (float)$sec); } $time_start= microtime_float(); is_file('1.html'); //判断当前目录是否有1.html这个文件 $time_end= microtime_float(); $time=$time_end-$time_start; echo"Did is_file in $time seconds\n"; ?>
open_basedir のテスト結果については
0.0006 / 5.0E-5
ギャップは非常に大きいですが、賢明な友人は、作成者の Web サイトが open_basedir で構成されており、そのようなパフォーマンスがあることに注意してください。損失を考えると、安全と引き換えにパフォーマンスを犠牲にするほうがよいと思います。どのような選択をしますか?推測する必要はありません、あなたも私と同じ選択をするかもしれません ~ 結局のところ、サーバーのセキュリティの方が重要です。
ヒント: open_basedir の設定方法
スクリプトが fopen() や gzopen() などでファイルを開こうとすると、ファイルの場所がチェックされます。 PHP は、指定されたディレクトリ ツリーの外にあるファイルを開くことを拒否します。すべてのシンボリック リンクは解決されるため、シンボリック リンクを通じてこの制限を回避することはできません。
特別な値。スクリプトの作業ディレクトリがベース ディレクトリとして使用されることを指定します。ただし、スクリプトの作業ディレクトリは chdir() によって簡単に変更できるため、これは多少危険です。
httpd.conf ファイルでは、「php_admin_value open_basedir none」メソッド (一部の仮想ホストなど) を使用して、他の構成オプションと同様に open_basedir をオフにすることができます。
Windows では、ディレクトリをセミコロンで区切ります。他のシステム上のディレクトリを区切るにはコロンを使用します。 Apache モジュールとして、親ディレクトリの open_basedir パスが自動的に継承されます。
open_basedir で指定される制限は、実際にはディレクトリ名ではなくプレフィックスです。これは、「open_basedir = /dir/incl」により、「/dir/include」および「/dir/incls」が存在する場合には、それらへのアクセスも許可されることを意味します。指定したディレクトリのみへのアクセスを制限したい場合は、パス名の末尾にスラッシュを付けます。例: 「open_basedir = /dir/incl/」。