-1

現在、ユーザーが手動でURLを入力できるという事実を除いて、すべてがうまく機能しています。これにより、サイトのCIの設定方法が混乱します。例えば:

www.somesite.com/folder/

コントローラ内のこのフォルダにはアクセスできないようにする必要があります...そのフォルダのインデックスページにリダイレクトする必要があります。これにより、404エラーが発生します。htaccessファイルのすべてにdenyを追加しようとしましたが、何も実行されないようです。

www.somesite.com/folder/index.html

私は実際にすべてのフォルダがこのように機能することを望んでいます。フォルダにindex.htmlファイルがありますが、読み取られません。CIでこれを修正する方法はありますか?また、ユーザーがコントローラー機能に手動でアクセスできるという問題もあります。人々が提案したように、私はそれらをプライベートに変更しようとしましたが、その後、私のスクリプトはそれらにアクセスできません。例えば:

www.somesite.com/controller_file/some_function

彼らがこの機能にアクセスするのをブロックするにはどうすればよいですか?

4

2 に答える 2

1

ファイルシステムへのアクセスを拒否する限り、最善の策は、自分ApplicationSystemフォルダをWebルートの外に配置することです。次に、index.phpを編集して、各フォルダーへの新しいパスを設定します。私の一般的な設定は次のようになります。

+ Root
| - Application
| - System
| + Webroot
| | - js
| | - css
| | - index.php
| | - ...
+ - ...


2番目の質問については、特定の関数がURLから直接アクセスされないようにするには、それらの関数の前にアンダーバーを付ける必要があります。

だから代わりに

public function some_function() {...}

使用する public function _some_function() {...}

その後、コントローラーで次のコマンドを使用して呼び出すことができます。$this->_some_function();

AJAX関数がある場合は、それらにアクセスできるように、名前からアンダーバーを削除する必要があります。関数を次の条件でラップすることにより、ユーザーがURLから直接アクセスするのを防ぐことができます。

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) {}

上記は、リクエストがAJAX経由であるかどうかをチェックします。

于 2012-12-21T09:19:36.457 に答える
1

ホワイトリストソリューションを作成できます。

  1. application / config/routes.phpを開きます
  2. 許可するルートを追加します。
  3. キャッチオールルートを追加し、.*それをerrotハンドラーにリダイレクトします

Codeignitersは、配列にリストされている順序でルートパターンを一致させようとするため、ユーザーが明示的に許可しなかったルートを入力すると、すべてのユーザーがキャッチオールルートにリダイレクトされます。

ルーティングに関するユーザーガイド

編集:特定のパターンに一致するリクエストのみをリダイレクトすることでブラックリストロジックを作成し、他のすべてのリクエストのデフォルトの動作を維持できます。

于 2012-12-21T09:30:35.267 に答える