私はCodeIgniterを使ってWebアプリケーションを作成しました。アプリケーションでajaxを使用する場所がいくつかあります。Ajaxリクエストは誰にも公開されていません
私は、ajaxコントローラへの直接アクセスとクエリを停止し、ページから発信された正当なajaxリクエストのみを処理できる方法があるかどうかを知りたいと思います。
ありがとうございました。
私はCodeIgniterを使ってWebアプリケーションを作成しました。アプリケーションでajaxを使用する場所がいくつかあります。Ajaxリクエストは誰にも公開されていません
私は、ajaxコントローラへの直接アクセスとクエリを停止し、ページから発信された正当なajaxリクエストのみを処理できる方法があるかどうかを知りたいと思います。
ありがとうございました。
はい、これは問題なく実行できます。 CodeIgniter入力クラスにはis_ajax_request()というメソッドがあります。コントローラのアクションの開始時にこれを確認するだけです。たとえば:あなたはAJAX呼び出しのために完全に指定されているコントローラをお持ちの場合
function ajax_save() {
if ($this->input->is_ajax_request()) {
//continue on as per usual
} else {
show_error("No direct access allowed");
//or redirect to wherever you would like
}
}
は、あなたは、コントローラのコンストラクタfunction __construct()
にそのif文を置くことができます。最初にparent :: __ constructor()を呼び出すことを忘れないでください!
編集:「ページからの発信」に関しては、おそらくあなたのajaxリクエストで認証+セキュリティチェック(セッションを経由してデータベースにヒットしない可能性があります)を実行する必要があります。したがって、あなたのwebappと提携していない不正なユーザーは、手動でajaxリクエストを手動で送信できないはずです。希望があなたの質問に答えることを望みます。
AJAXリクエストは単純なHTTPリクエストです。なぜ直接アクセスを停止したいのですか? – kapa
決まった人を止めるのは難しいかもしれませんが、人々がAjaxの結果ページに直接アクセスするのを止める方法があるかどうかを知りたいのです。それはデータベースからの結果(保護する必要はありません)を示していますが、私は誰かに来て、そこから私のデータベースを掻き集めるのではなく、意図した用途だけを望んでいます。 – DMin
しかし、あなたはページ上のデータベースの結果をとにかく表示しますか? – kapa