2011-11-14 8 views
0

私のウェブサイトのファイル構造は、現在、次のようになります。marketplace.phpオン 保管PHPが含まれていた安全

  • cats.php
  • 私は$_GETにリンク4つのカテゴリーがあり

    • marketplace.php変数(例:marketplace.php?cat = [1-4])。 marketplace.phpのためのスクリプトの先頭に

      、私はそれがそうでゼロより上で、そして場合cat変数、小切手を探しif文を持っています。

      catに0より大きい数字が含まれている場合は、cats.phpが含まれ、そのカテゴリ番号に従ってデータが表示されます。

      私はどのようにして人々がcats.phpにブラウザで入力することができないようにしますか?

    +1

    cat.phpへの直接呼び出しで何が問題になりますか? –

    +0

    @ Col.Shrapnel彼らはそれを期待しているでしょう –

    +0

    類似した質問:http://stackoverflow.com/questions/409496/prevent-direct-access-to-a-php-include-file – xbonez

    答えて

    5

    cats.phpをドキュメントルートから移動しますが、インクルードパス上に保持してください。

    1

    質問が正しく表示される場合は、ユーザーが含まれているファイル(コアファイル)にアクセスするように制限する必要があります。

    .htaccessで制限するか、最終的には定数(IN_APP)を定義することができます。この定数はインクルードされているすべてのファイルでチェックされます。定数が定義されていない場合は、ページが存在しないというエラー(404)が表示されます。

    +0

    CMSの。アクセスを簡単にブロックし、docroot以外の場所にアクセスする必要はありません(すべてのホスティングでdocroot以外の場所が提供されるわけではありません)。 – KingJackaL

    0

    これにはいくつかの方法があります。サーバー上で.htaccessが有効になっている場合は、cat.phpへのアクセスをブロックしたり、フォルダ全体へのアクセスをブロックしたり、そこにすべてのインクルードを入れることができます。

    また、あなたのウェブルート(public_htmlまたはあなたのフォルダが呼ばれているもの)の外側にcat.phpを置くこともできます。

    0

    最も一般的で簡単な方法です。あなたのメインファイル

    define('MY_APP_IS_RUNNING', true); 
    

    で定数を定義し、

    if(!defined('MY_APP_IS_RUNNING') { 
        die('This is a include file not for public access'); 
    } 
    

    少し古い学校が、作品を追加することによって含ま確保。

    編集

    基本的な考え方は、すべてのあなた含み/プライベートファイルは、あなたがあなたの公開スクリプト内で定義定数に依存しています。この定数が定義されている場合にのみ、インクルードが実行されます。

    marketplace.phpにあなたは

    define('MY_APP_IS_RUNNING', true); 
    include_once 'cat.php'; 
    

    を書くでしょうし、あなたのcat.phpは単に 'MY_APP_IS_RUNNING' は定義されているかどうかを見ていきます。これにより、基本的なセキュリティがスクリプトに追加され、直接外部呼び出しが防止されます。

    +0

    これをもっと詳しく説明できますか、私は本当に理解できません。申し訳ありませんが、PHPで進歩していません。 – syntheticsaint

    +0

    見てみましょうか? – FloydThreepwood

    関連する問題