ウェブサイトセキュリティとパフォーマンスは相反する関係にあるようです。 PHP Web サイトの場合、選択するのが特に困難です。最も単純な例を見てみましょう: php 構成ファイル open_basedir は、PHP が開くことができるファイルを、ファイル自体を含む指定されたディレクトリ ツリーに制限します。本来、これは Web サイトのセキュリティにとって非常に有益ですが、作成者がインターネットから入手した情報によると、open_basedir は PHP の IO 操作のパフォーマンスに大きな影響を与えるとのことです。調査データによると、php_basedir で構成されたスクリプト io の実行速度は、構成されていない場合の 10 倍以上遅くなります。

?

最初はこの結果を完全に信じていませんでしたが、テストデータを見てこの見方を認めるようになりました。

簡単なスクリプトを作成します:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

<code class="php keyword"><strong><span style="color: #006699;">function</span></strong>関数microtime_float()

{

???? list( <span style="color: #aa7700;">$usec</span>, <span style="color: #aa7700;">$usec<code class="php variable"><span style="color: #aa7700;">$sec</span>) = <span style="color: #aa7700;">$sec<code class="php functions"><span style="color: #ff1493;">explode</span>(<span style="color: #ff1493;">爆発<code class="php string"><span style="color: #0000ff;">" "</span>, microtime()); <span style="color: #0000ff;">" "</p>
???? <strong><span style="color: #006699;">return</span></strong> ((float)<span style="color: #aa7700;">$usec</span>return+ (float)<span style="color: #aa7700;">$sec</span> ); <span style="color: #aa7700;">$usec</p>
<span style="color: #aa7700;">$sec<code class="php plain">}

?

<span style="color: #aa7700;">$time_start</span> = microtime_float(); ?

<span style="color: #aa7700;">$time_start<code class="php spaces">?

<span style="color: #ff1493;">is_file</span> (?<span style="color: #0000ff;">'1.html'</span> );? <span style="color: #ff1493;">is_file<code class="php comments"><span style="color: #008200;">//判断当前目录是否有1.html这个文件 </span>

<span style="color: #0000ff ;">'1.html'<div class="line number11 index10 alt2"><span style="color: #aa7700;">$time_end</span><span style="color: #008200;">//現在のディレクトリに 1.html があるかどうかを判断しますファイル<code class="php plain">= microtime_float();

<span style="color: #aa7700;">$time_end<code class="php variable"><span style="color: #aa7700;">$time</span> = <span style="color: #aa7700;">$time_end</span> - $time<span style="color: #aa7700;">$time_start</span> ; <span style="color: # aa7700;">$time_end</p>
<span style="color: #aa7700;">$time_start<code class="php spaces">?

<🎜> <🎜> <🎜>?<🎜>
<span style="color: #ff1493;">echo</span> <span style="color: #0000ff;">"Did is_file in $time secondsn"</span>;

?>

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/」。

?

?

?

?

?

?

?