2010-11-18 29 views
0

次のように私は、動的画像にリンクれているtest.phpと呼ばれるPHPページはimage.phpと呼ばれています:ブロックの直接アクセス

echo "<img src=\"image.php?ID=abc&X=123\" align=\"absmiddle\" style=\"margin:5px;\"><br>"; 

を画像ファイルには、GETパラメータとしてIDXをとり、私のサーバーから既存の静止画像をincludeに使用します。サーバにファイルをjpegとして解釈させるヘッダが送られます。

私はhttp://mydomain.com/image.php?ID=/abc&X=123にアクセスして画像を取得できないようにしたいのですが、その画像はtest.phpと私のサーバ上の他のページで閲覧できます。これをどのように達成するのですか?

これまでのところ、多くの種類の.htaccess改造と書き直しを試みました。そのうちの最も近いものはthe one shown on this pageです。何も働いていません。助けてください!

+0

あなたのご意見ありがとうございました。あなたの答えが正しい方向に私を設定している間、このページの解決策は私が必要としていたものです:http://bit.ly/fN2RSN – mukduk

答えて

2

ブラウザで画像を表示するためにはの直接アクセスがあるため、できません。

HTTP_REFERERの分析についてのアドバイスがたくさんあるでしょうが、このヘッダはオプションであり、いくつかの状況で、それはなど、ファイアウォール、アンチウイルス、プロキシ、

+0

私はこのサイトのソリューションがかなり有効であることを発見しました:http://bit.ly/fN2RSN – mukduk

+0

@ romanusfatuus:それは私の答えで説明した問題を解決しません。興味深いものはありません。あなたができる最良のことは、(.htaccessで、もちろん、** php **ではない)を確認することです。refererが存在し、現在のドメインと等しいか、まったく存在しません。これは私が考える良い妥協です。 – zerkms

+0

ありがとう!私はその尺度を取り入れます。 – mukduk

0

でオフcuttedすることができますので、それは、悪い決断になります

test.phpを::

<?php 
session_start(); 
//.... 
$_SESSION["allow_images"]="yes"; 
echo "<img src=\"image.php?ID=abc&X=123\" align=\"absmiddle\" style=\"margin:5px;\"><br>"; 
?> 

image.php:

<?php 
session_start(); 

if(isset($_SESSION["allow_images"]) { 
    // render image 
    unset($_SESSION["allow_images"]); 
} else { 
    // throw error/ show dummy image /etc 
} 
?> 
I)は、セッションを使用してください

II)第二の溶液(絶対確実ではない):HTTP_REFERERを簡単に詐称できることimage.phpインサイド

$ref=$_SERVER["HTTP_REFERER"]; 
if($ref == "http://yoursite.com/path/test.php") { 
    // get image parameters and render image 
} else { 
    // throw error or maybe render a dummy image with just few bytes 
}; 

注意。


以前の間違った解決策:レンダリングの前にimage.phpでISSETためtest.phpを

$allow_image="yes"; 
echo "<img src=\"image.php?ID=abc&X=123\" align=\"absmiddle\" style=\"margin:5px;\"><br>"; 

とテストで

使用変数($ allow_images)。 romanusfatuusが指摘したように、image.phpが含まれていた場合にのみ機能します。

+0

これは、画像を 'test.php'に' include 'して、それを含むコードにアクセスできるようにするだけで動作します。残念ながら、私が知る限り、 'image.php'は' $ allow_image_access'の存在を見たり、判断したりすることはできません。 – mukduk

+0

申し訳ありませんが、あなたがファイルを "インクルード"する場合にのみ、変数が動作するようです。しかし、これらの行に沿ったものはうまくいくはずです。 –

+0

真。 HTTP_REFERERは別の方法ですが、これは絶対確実ではありません。 –

関連する問題