1

訪問者によるページへのアクセスを拒否したいが、ページは引き続き使用したい。どうやって:

~ ページを表示できないようにしますが、ajax リクエストを処理できるようにします。

~ PHP ファイルを表示できないようにしますが、スクリプトに含めます。

htaccessが必要なようです。使用してみましたが、ファイルをインクルードとして使用できなくなりました。

ajaxのみについては、ajaxのみのページでこれを使用できるようです:

<?php
$AJAX = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
        $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
if ($AJAX){
    // echo ajax code.
}
?>

これは信頼できますか?

TAGS: ajax経由のみ

4

2 に答える 2

2

スクリプトをサーバー側で含めて使用できるが、クライアントからはアクセスできないようにすることに関する2番目の質問を実行する1つの方法は、この方法で保護するスクリプトを含むフォルダー内の.htaccessファイルにこれを追加することです。 :

deny from all

今すぐスクリプトを参照してみてください。スクリプトにアクセスできないはずです。これは、.htaccessファイルが配置されているディレクトリ全体で機能します。

このようにWebサーバーを介したクライアントによるアクセスからphpファイルを「保護」する別の方法は、wwwroot/public_htmlの外部のディレクトリにphpファイルを配置することです。

PHP構成では、このdirをinclude-searchパスに追加するか、正しい相対パスを介して、または絶対パスを使用して含める必要があります。

たとえば、root_taining_folder / wwwroot/index.phpとroot_taining_folder/app / core.phpがある場合、index.phpには次のようになります。

require_once('../app/core.php');

コアは含まれますが、ブラウザーが単独でcore.phpにアクセスすることはできません。(可能であれば、www.faceing-site.com / .. / app / core.phpのようなURLを経由する必要があります。これは、Webサーバーでは許可されるべきではありません!)

于 2012-04-20T22:32:33.110 に答える
1

これらのことはできません。スクリプトが AJAX リクエストを行うとき、リクエストを送信するのはユーザーのブラウザです。クライアント側のスクリプトでコンテンツを表示する場合は、ブラウザーでコンテンツを表示できる必要があります。

たとえば、スクリプトにある種の認証トークンを入れるなどして、不明瞭なセキュリティを適用できます。ユーザーは JS を読み取ってトークンを取得するだけなので、これでは十分な保護は得られませんが、カジュアルな訪問者がうろうろするのを防ぐことができます。あなたの「if XHR」は効果的にこれを行っています.アドレスバーにアドレスが入力されている場合、ブラウザは通常そのヘッダーを送信しませんが、ユーザーはAJAXコードの外で同じ効果を簡単に得ることができます.

于 2012-04-20T22:28:19.933 に答える