私のサイト (https://example.com) には、last.fm API を解析し、akamai CDN から画像を取得してページに表示するページがあります。
問題は、すべての画像が HTTP のみで提供されることです。https はサポートされていません。
例: http://userserve-ak.last.fm/serve/64s/76030502.png
私はphpで書かれた画像プロキシを持っています:
<?php
header('Content-Type: image/png');
if(isset($_GET['img'])){echo file_get_contents($_GET['img']);}
?>
これは完全に機能しますが、まったく安全ではありません。サーバーのみがイメージ プロキシを使用できるようにしたいので、URL のハッシュが最適なオプションでしょうか?
https://example.com/proxy.php?url=http://last.fm/image.jpg&hash=hashhere
私は使用することを考えていました:
md5($_GET['img']."privatekeyhere");
次に、私の問題は、全世界がアクセスできないように、秘密鍵をJavaScriptコードに入れる方法ですか?
どんな助けでも大歓迎です。
それ以来、ある程度効果的ですが、回避される可能性がある次のスクリプトを作成しました。
<?php
$args = $_GET['q'];
$date = date('m-d-Y-h-i', time());
list($hash,$img,$auth) = explode("/", $args);
if($hash=="need" && $auth=="key"){
$checksum = md5($img.$date);
echo $checksum;
}
if($hash==md5($img.$date))
{
header('Content-Type: image/png');
echo file_get_contents('http://userserve-ak.last.fm/serve/64s/' . $img);
}
?>
これは次のように呼び出すことができます:https://www.mylesgray.com/lastfm/need/76030502.png/key
次に、認証コードをプラグインして画像を表示できます。https://www.mylesgray.com/lastfm/{code-here}/76030502.png
しかし、毎分キーをポーリングするスクリプトを設定できることを誰かが理解するのにそれほど時間はかかりません - 何かアドバイスはありますか?