5

現時点では、次のようにしています。

1つのファイルで、それを呼び出しましょうfile_one.php、私は持っています

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

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

そして、file_two.php私はこれを一番上に持っています:

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

したがって、 の内容はが定義されているfile_two.php場合にのみアクセスできます。これは で発生します。直接アクセスしようとするとうまくいきませんよね?この方法に欠陥はありますか?ROOTfile_one.phpfile_two.php

4

2 に答える 2

1

まさにおっしゃる通りです。誰かがブラウザに /../../file_two.php を直接入力すると、そのまま終了します。ファイルがインクルードなしで個別にロードされる場合、ROOT は定義されません。

PHP では、1 つのファイルに他のファイルが含まれており、最終的には 1 つのファイルで終わることに注意してください。したがって、直接アクセス変数がチェックの前に定義されていない場合、アクセスは許可されません。

于 2013-02-21T16:17:27.377 に答える
1

John Conde のコメントを回答に変換する:

ブラウザでファイルにアクセスできないようにする最善の方法は、ファイルを webroot の外に置くことです。

Web サイトのファイルを含む、または類似のwww名前のフォルダーが必要です。それを含むフォルダーに、フォルダーを配置して、そこにスクリプトアクセス専用ファイルをpublic_html入れることができます。includesこの方法では、Web からは完全にアクセスできなくなりますが、スクリプトはアクセスできます。

于 2013-02-21T16:21:44.563 に答える