0

サイトをホストしましたが、ドキュメントはファイルをフォルダーの下に置くことを提案していますpublic_html。ルート フォルダに との3 つのファイルindex.php(ページを表示) があります。(ビュー)ファイルのボタンをクリックすると、ajax関数がトリガーされます。common.jsresult.php(php)index.phpresult.php

result.php問題は、誰もが直接アクセスできることです...

result.phpすべてのphpファイル( )がルートの背後のフォルダーにあるフォルダー構造を作成しようとしています。そのため、書き換えルールなどを使用してブラウザから直接アクセスすることはありません。

この問題を解決するのを手伝ってください...

4

3 に答える 3

2

ajax経由でのみファイルにアクセスできるようにするには、次を使用できます。

public static function isAjax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest");
}

true または false を返します。基本的に、true が返された場合は、ユーザーに続行させます。それ以外の場合は停止します。

注意: すべての JS ライブラリ/フレームワークが実際にこのヘッダーを設定するわけではありませんが、すべてのバージョンではなくほとんど (JQuery、Mootools など) で設定されるため、これを使用する前にライブラリ/フレームワークの最新バージョンがあることを確認してください。

さらに、ユーザーがヘッダーを偽装した場合、それらを止める実際の方法はありません。

私はこれを、AJAX ページが一般に公開されないようにする前兆として使用する傾向があります。また、パラメーターの整合性チェックとセッションに保存されたランダム ハッシュ (CSRF タイプのもの) を使用して、ユーザーが AJAX ページに合法的にアクセスしているかどうかをチェックします。

于 2012-07-29T16:08:40.367 に答える
1

セッション(または他のタイプのトークン)を除いて、へのリクエストresult.phpが正当なAJAX呼び出しによってトリガーされたかどうかを区別する方法がないため、移動して保護することはできません。 以下を行うには、php セッション (または同等のもの) を使用する必要があります。 index.php

  1. ユーザーがアクセスできるものを (index.php に) 保存します。
  2. 彼が(result.php)でアクセスできるかどうかを確認します
于 2012-07-29T16:10:48.500 に答える
0

Ajax 呼び出しは Web ブラウザーと同じ動作を行うため、ajax 経由でファイルにアクセスできるようにしてから、正しいブラウザー リクエスト経由でアクセスできないようにすることはできません。

于 2012-07-29T16:09:59.450 に答える