Proteger um proxy php?
Então, no meu site (https://example.com) eu tenho uma página que analisa a API last.fm e retira as imagens do CDN do akamai e as exibe na página.
A única coisa é que todas as imagens são servidas apenas em HTTP, https não é suportado.
por exemplo:http://userserve-ak.last.fm/serve/64s/76030502.png
Eu tenho um proxy de imagem escrito em php:
<?php
header('Content-Type: image/png');
if(isset($_GET['img'])){echo file_get_contents($_GET['img']);}
?>
Isso funciona perfeitamente, no entanto, não é seguro em tudo, eu quero que apenas o meu servidor pode usar o proxy de imagem e, como tal, um hash na URL pode ser a melhor opção?
https://example.com/proxy.php?url=http://last.fm/image.jpg&hash=hashhere
Eu pensei em usar:
md5($_GET['img']."privatekeyhere");
Então, meu problema virou-se para, como colocar a chave privada no código javascript sem o mundo inteiro ter acesso a ele?
Qualquer ajuda muito apreciada.
Eu já escrevi este script que é um pouco eficaz, mas ainda está aberto a ser contornado:
<?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);
}
?>
Isso pode ser chamado assim:https://www.mylesgray.com/lastfm/need/76030502.png/key
O código de autenticação pode então ser conectado para exibir a imagem:https://www.mylesgray.com/lastfm/{code-here}/76030502.png
No entanto, não demora muito para alguém descobrir que eles podem configurar um script para pesquisar uma chave a cada minuto - algum conselho?