1

メンバーシップスクリプトを使用して、グループの人々がプライベートファイルにアクセスできるようにしています。問題は、ファイルへのリンクを知っている人なら誰でも、メンバーシップスクリプトを簡単にバイパスして、ファイルに直接アクセスできることです。私の目標は、を介した直接URLアクセスを防ぎhttp://domain.com/folder1/folder2/index.php、からのアクセスのみを受け入れることですhttp://domain.com/folder1/file_with_link_to_index.php。人々がファイルの場所へのURLを入力するのを防ぐことができない限り、メンバーシップスクリプトは役に立ちません。

Apacheを理解し始めるのに苦労していますが、私がやろうとしていたのは、「すべて拒否」を使用してから「許可」を使用することでしたhttp://folder1/file_with_link_to_index.php。そのため、ファイルへのアクセスは「file_with_link〜」を介してのみアクセスできます。うまくいきませんでした。それでも、ファイルへのURLをブラウザに貼り付けて、ディレクトリにアクセスすることができました。

StackOで同様の質問を見つけましたが、私の問題に類似した小さな部分を理解して実際に使用するのに十分な経験がありませんでした。それはおそらく単純なことですが、私はこれを理解しようとすることに非常に不満を感じているので、私はそれを見ることができません。

これが私が使おうとしていたものの簡単な例です:

ここに示されているものを除くすべてを拒否する

<Limit GET POST PUT>
 order deny,allow
 deny from all
 allow from 12.345.67.890
 allow from http://domain.com/fold1/LINKING_FILE/program_index.php
</Limit>

ドメインが書き込まれるはずの方法で失敗していると確信しています。おそらくそれが機能していない理由ですか?

4

2 に答える 2

1

これには、htaccess以外のアプローチを使用します。パブリックWebが到達できないディレクトリにファイルを配置し、メンバーシップphpスクリプトを使用してファイルを取得します。

于 2012-10-13T22:37:46.713 に答える
0

jTheManは正しかった。PHPを使用してこれに取り組むためのより良い方法がありました。私の問題に対する私の修正は、他の誰かに役立つ場合に備えて以下にあります。唯一の素晴らしい追加は、以下のコードで、私自身の0のように1つのIPからの直接URLアクセスを許可することです。

次のファイルを「head」または「index」、または各アプリケーションで最初に呼び出されたページの最上部に追加しました。

//Begin refuse direct URL Connections
$refering=parse_url($_SERVER['HTTP_REFERER']);
if($refering['host']==$_SERVER['HTTP_HOST']){
   echo "";
} else {
   header("Location: http://www.yourdomain.com");
    exit();
}
//End refuse direct URL Connections

ありがとうございました!

于 2012-10-14T07:16:18.580 に答える