2013-02-21 10 views
5

への直接スクリプトアクセスブロッキング:、一つのファイルに私はこのようにそれを行う時点ではファイル

file_one.phpそれを呼び出すことができます、私は

define('ROOT', realpath(dirname(__FILE__))); 

require_once(ROOTPATH . '/file_two.php'); 

を持ってfile_two.phpに、私は、その後でこれを持っていますトップ:

if (! defined('ROOT')) 
    exit; 

ROOTfile_one.phpで行われ、定義されているのであればfile_two.phpの内容のみがアクセスすることができます。 file_two.phpに直接アクセスしようとするとうまくいかないでしょうか?この方法に欠陥がありますか?

+5

可能であればWebrootの外側に置くことも良い考えです。 –

+0

これは、CodeIgniterのやり方だから、ほとんど安全です。上記の投稿に同意しますが、これが問題であれば、それを単にdocrootから移動してください –

答えて

1

:ファイルを確保するための最良の方法は、ブラウザでアクセスすることができません

は、ウェブルートの外に置くことです。

ウェブサイトのファイルを含むwwwまたはpublic_htmlなどの名前のフォルダが必要です。さて、それを含むフォルダにincludesフォルダを置き、そこにスクリプトアクセス専用ファイルを置くことができます。この方法では、Webから完全にアクセスできませんが、スクリプトは引き続きWebにアクセスできます。

1

あなたの言うとおりです。誰かが直接ブラウザに入力すると、/../../file_two.phpは終了します。ファイルがインクルードなしで独立してロードされると、ROOTは定義されません。

PHPでは、1つのファイルには他のものと他のものが含まれていることを覚えておいてください。最後に1つのファイルがあります。したがって、直接アクセス変数がチェックの前のどこかで定義されていない場合、アクセスは許可されません。その答えにジョン・コンデさんのコメントの変換

関連する問題