내 웹 사이트에서 mp3 파일을 재생할 수있는 플래시 플레이어가 있습니다.하지만 누군가가 "viewsource"또는 방화 광 등과 같은 브라우저 도구를 사용하면 매개 변수를 찾아서 실제 mp3 파일 URL. 내 백 엔드에서 PHP를 사용하고 있습니다. 이러한 매개 변수를 숨기려면 어딘가에 있어야하지만 방법을 파악할 수 없습니까?플래시 플레이어에서 MP3 파일 경로 보호하기
아이디어가 있으십니까?
내 웹 사이트에서 mp3 파일을 재생할 수있는 플래시 플레이어가 있습니다.하지만 누군가가 "viewsource"또는 방화 광 등과 같은 브라우저 도구를 사용하면 매개 변수를 찾아서 실제 mp3 파일 URL. 내 백 엔드에서 PHP를 사용하고 있습니다. 이러한 매개 변수를 숨기려면 어딘가에 있어야하지만 방법을 파악할 수 없습니까?플래시 플레이어에서 MP3 파일 경로 보호하기
아이디어가 있으십니까?
머리말 : 웹에 표시하면 훔칠 수 있습니다. 기간.
두 가지 일을 PHP 스크립트를 통과하여 파일의 URL을 마스킹하여 많은 어렵게 만들 수 있습니다 말했다 :
1 )의 유효성을 검사 할 수있는 암호화 된 GET 매개 변수를 변환 할 수 있습니다 한 번만 사용하십시오 (데이터베이스 또는 로그에 변수를 저장하십시오). 이 코드는 플레이어가로드 될 때 만들어지며 일단 버퍼링을 시작하면 파일을 다시 사용할 수 없습니다. 이렇게하면 매개 변수가 임의의 문자열 (해독 가능해야 함) 일 수 없으며 사용자는 동일한 URL을 사용할 수 없습니다.
사용자가 같은 것을 보일 것이다받을 수있는 HTML 페이지에서 PHP :
http://yoursite.com/mp3/file_fetcher.php?file_id=123&tolken=<?php echo $tolken;?>
파일 : 다음
$key = 'My EnCyption Key';
$unique_string = "Generated at ".time().$_SERVER['REMOTE_ADDR']; //the time element changes the string each time and the IP address controls for multiple users simultaneously loading the same page
$tolken = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
및 다음 플래시 플레이어는 MP3 파일을 사용하도록 설정 될 것이다
$fixed_string_part = "Generated at ";
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($_GET['tolken']), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
if (substr($decrypted,0,strlen($fixed_string_part))!=$fixed_string_part){
die("Your tolken is invalid");
}
//check that the tolken hasn't been used before:
$check_query = mysql_query("select * from `mp3_tolken_log` where `tolken`='$decrypted';",[connection identifier]); //write this more cleanly
if (mysql_num_rows($query)){
die("You've already used that tolken!");
} else {
$log_it = mysql_query("insert into `mp3_tolken_log` (`tolken`,`dateadded`) VALUES ($decrypted,NOW())"); //make sure it's in there so it can't be used again
}
//now get the file if we haven't already died
$contents = file_get_contents([path/to/mp3/file/specified/by/id/$_GET['file_id']]);
header('Content-Type: audio/mpeg');
echo $contents;
:
file_fetcher.php
는 (분명히이 일부 구체화 아웃 필요) 같은 것을 할 것이다 0
2) 참조 사이트가 직접 스크립트에 액세스하려는 것이 아니라 자신의 사이트인지 확인하십시오. 뭔가 같이 : 물론
if (!isset($_SERVER['HTTP_REFERER'])){die("Restricted Access!");};
$_u=parse_url($_SERVER['HTTP_REFERER']);
$_u=preg_replace("/(www.)/i","",strtolower($_u['host']));
$_i=$_SERVER['HTTP_HOST'];
$_i=preg_replace("/(www.)/i","",strtolower($_i));
($_u == $_i) or die("Restricted Access!");
이 정보는 위조 할 수 있지만 및 단일 액세스 패스 사이에 당신은 직접적인 다운로드에 대해 걱정할 필요가 없습니다. 즉, 스트림에서 파일을 가져 오는 데는 백만 가지 방법이 있으며이를 막을 방법이 없습니다.
Sidenote하지만 플래시 파일 내부의 URL을 하드 코딩해도 사람들은 Fiddler와 같은 것을 사용하여 MP3에 대한 별도의 요청을 매우 쉽게 가로 채고 저장할 수 있습니다. –