2016-05-03 6 views
1

私はXML APIプロバイダを使用しています。彼らは私に特定の画像ソースを提供しています。img srcまたはリンク内の機密情報を非表示/変換する

<img src="http://api-provider.com/image/?key=YOUR_KEY&id=ID"/> 

ここで、私はAPIに使用しているキーを提供する必要があります。 誰かがページソースを見て、キーを取得するだけです。

これを回避してキーを何とか隠してもらえますか?あなたの画像のsrcタグで次に

$API_Key = "Your_API_Key_Here"; 
$url = "http://api-provider.com/image/?key={$API_Key}&id={$_GET['id']}"; 
header('Content-type: image/jpeg'); 
readfile($url); 

が置か:APIキーは、このような他の人が読めるならないよう

答えて

2

あなたはイメージをロードし、あなたのphpファイルでAPIキーを配置するPHPファイルを作ることができますあなた自身のリンク:http://yourdomain.com/get_image.php?id= {$ Image_Id}

しかし、画像はサーバーから読み取られるため、サーバーのリソースが使用されます。また、誰かがこのURLを取得した場合、APIキーなしでこれを使用することができるので、最初にURLにAPIキーを表示するだけでなく、セッションを確認してから画像を表示することもできます。ユーザーはあなたが乱数を掛けた後、IDにBASE64_ENCODEを行うことができ、直接サーバーを使用しようとしていないことを確認するために、@ miken32で指摘したように


。このよう :画像を読み込む前に

$Image_Src = "http://yourdomain.com/get_image.php?id=".base64_encode($Image_Id*18); 

とあなたのPHPファイルでは、最初のidはあなたが上でしたエンコーディングを反転させることにより、有効な数値であることを確認してください。

$Image_Id = $_GET['id']; 
$Image_Id = base64_decode($Image_Id); 
if (is_numeric($Image_Id)){ 
    $Correct_Image_Id = $Image_Id/18; 
    if ($Correct_Image_Id > 0){ 
     //read image here 
    } 
} 
+0

何らかの方法でIDを難読化することをお勧めします。たとえば、IDに18を掛けた後、ベース64でエンコードします。この方法では、ユーザーはリモートサーバー上のIDを把握する可能性が低くなります。 – miken32

+0

それはまた良いアイデアです、私は答えを更新しました。 –

関連する問題