Одним из способов будет включение ограниченного по времени хэша, который проверяется перед разрешением загрузки. Распределенная ссылка тогда имеет только небольшое окно времени, в течение которого она может быть использована.
Например
$file="foo.mp3";
$salt="youpeskykids";
$expiry=time()+3600;
$hash=md5($salt.$file.$expiry);
$url="download.php?file=$file&e=$expiry&h=$hash";
Теперь, когда вы обрабатываете такой запрос, вы можете пересчитать хеш и проверить, что представленный хеш равен: это гарантирует, что тот, кто создал URL, знает соль, которая, как надеются, будет только вашим сайтом. Если хеш действителен, вы можете доверять истечению времени, а если оно еще не истекло, разрешить загрузку.
Вы можете также включить в хеш другие вещи, например IP-адрес и пользовательский агент, если хотите иметь больше уверенности в том, что пользовательский агент, который запросил ссылку для загрузки, является тем, который фактически выполняет загрузку.