2016-04-06 5 views
0

今まで、私はpublic_htmlディレクトリの外の.iniファイルに自分のサーバー上で自分のサイトのルートパスを格納されています:ルートパスを見た場合のセキュリティへの影響は何ですか?

によって
[settings] 
home_url = 'http://www.example.com' 
root_path = '/home/this/that/public_html' 

と使用:

function parse_ini() { 

    $root = dirname(__FILE__); 
    return parse_ini_file($root.'/../../config.ini', true); 

} // End parse_ini 

function do_something() { 

    $ini = parse_ini(); // I now have $ini['settings']['root_path'] 

} 

私は感じます.iniファイルそのものが一般公開されておらず、ファイルを解析する唯一の時間は関数内にあるので、ファイル内のデータのスコープは非常に限られています。これはデータベースの資格情報が含まれているので重要です。

私は可能な限り多くのファイルを使用しないようにしたいと考えています。これは主にファイル読み込み時にファイルが複数回読み込まれるというオーバーヘッドが原因です(スコープは常に関数内にあるためです)。

グローバルスコープの定数にルートパスを置くと、どのようなセキュリティ上の影響がありますか?

define('ROOT_PATH', '/home/this/that/public_html'); 

私は、.iniファイルにデータベースの資格情報のみを置き、他のすべてをそこから移動することを考えています。私がまだ良い場所を見つけられていない唯一のことは、サーバー上のルートパスであり、誰かがそれを見つけたら、これが開く可能性のある穴が少し心配です。

+1

'ini'が一般公開されていませんか?これは、 '.htaccess'ファイルを使用して制限する必要があります。未知の場所に隠すことではありません。それは、あいまいさによるセキュリティ*でしょう。 – bytecode77

+1

"ルートパスを見たときのセキュリティ上の影響は何ですか?" NONE –

+0

@ bytecode77 public_htmlフォルダの外にあります。 – JROB

答えて

1

最初のもの:iniファイルは「公開されていません」 - 誰もそのディレクトリを知っていないため簡単に見つかりませんか?その場合は、security through obscurityとなります。そうしないと、.htaccessファイルを簡単に使用して保護することができます。

資格情報を保存する場合は、間違いなくPHPファイルに保存する必要があります。これは標準的な方法です。なぜなら、あなたのサーバーからPHPをアンインストールしない限り、PHPファイルの内容を読み取ることができないからです。また、より効率的に解析されます。他の脆弱性が存在する場合は、のINIファイルが読み取られる可能性があります。 あなたのセキュリティにあまりに多くの穴を突っ込まないでください。

TL; DR:パスの公開はない問題です。安価なウェブホスティングパッケージを借りると、ウェブホストに脆弱ではないパスも見ることができるので、あなたも理解できます。

関連する問題