2016-10-17 1 views
0

は、セキュリティ上の理由からCIに我々はすべてのコントローラページの最上部にコードCIは、モデルとビューで定義されたBASEPATHを使用する必要がありますか?私が正しく理解されているように、ページが独自にコントローラを実行することがないように、

defined('BASEPATH') OR exit('No direct script access allowed'); 

のこの行を記述する必要があります。

しかし、すべてのビューとモデルページにこのコードを書く必要があるのでしょうか?私はGoogleとstackoverflowで検索したので、ビューとモデルページではっきりと説明する人はいません。

ありがとうございました

答えて

0

はいこれはセキュリティ上の懸念から必要です。ブラウザ経由でviews & modelsファイルに直接アクセスできないようにするためです。これを含めないと、ブラウザからファイルにアクセスすることができ、これが危険です。

[いいえ、あなたは必ずこれを行う必要はありませんコード

<IfModule authz_core_module> 
    Require all denied 
</IfModule> 
<IfModule !authz_core_module> 
    Deny from all 
</IfModule> 
1

に従うことによってapplicationディレクトリに.htaccessを通して、あなたのファイルへの直接アクセスを許可しないことが。

CodeIgniterストックファイルはほとんどゼロの設定で実行しようとするため、この行があります。これは、多くの場合、ユーザーがすべてをWebrootの下に置いていることを意味します。

しかし、それはあなたのセットアップがそのようなものでなければならないというわけではありません。正反対です - あなたのindex.phpファイルだけがウェブ経由でアクセス可能でなければなりません。そうした場合、これらの行は関係ありません。

もちろん、Apacheの.htaccessルールやnginxの適切なlocationブロックを介してフレームワークファイルへのアクセスを拒否することができます。

0

あなたのサーバーは、.htaccessファイルを許可しないか、スクリプトがアクセスすることができます上書きされている場合ので、あなたのモデルとビュー

defined('BASEPATH') OR exit('No direct script access allowed'); 

を追加するために、常に安全です。

関連する問題