различить флэш-запрос и запрос пришел из адресной строки браузера ,, - PullRequest
3 голосов
/ 06 декабря 2010

привет, я пытаюсь предотвратить загрузку mp3-песен, поэтому я хочу спросить вас, ребята, можно ли различить флэш-запрос и нормальные http-запросы, я проверил переменную $ _SERVER, но не смог найти никакой разницы, что следует я делаю? любые решения, пожалуйста ,,

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Я опишу один способ достижения того, чего вы хотите, который не прост, но и не слишком сложен.Также не уверен, что он лучший, но он должен работать.

Первый шаг: вместо прямой ссылки на файл mp3 (например, /MySongs/song.mp3), поместите файлы за пределы веб-сайта.корневая папка и страница, которая получает желаемый файл по URL-адресу и отправляет содержимое файла как результат с правильным типом содержимого и всем, например, GetSong.php?songname=song3

Как только вы это сделаете, у вас будет больший контроль надфайлы.

Второй шаг: в параметрах флэш-памяти, измените /MySongs/song.mp3 на вышеуказанный.Убедитесь, что он работает .. обратите внимание, что это все еще ничего не решает.

Третий шаг: всякий раз, когда пользователь отправляет запрос на страницу, содержащую флэш-память, которая захватывает песню, назначьте переменную Session (илиего эквивалент в PHP) с точной отметкой времени запроса.Здесь я полагаюсь на тот факт, что флэш-память отправит запрос в одно и то же мгновение.

Последний шаг: в GetSong.php проверьте вышеуказанную переменную Session и отправьте файлтолько если текущее время точно соответствует метке времени в сеансе, возможно, допустим запас в миллисекундах.

Умные пользователи, которые взломают, как это работает, могут обойти это, но это должно удерживать большинство обычных людей, пытающихся получить песню, даже если они используют инструменты, чтобы увидеть, как Flash запрашивает песню.

1 голос
/ 06 декабря 2010

Нет, когда вы используете методы Flash getURL или navigateToUrl, он отправляет обычный http-пакет, который вы не сможете отличить от обычных запросов браузера.

Но сам SWF-файл может быть заблокирован доменом и , хотя этот метод можно взломать , если им удастся загрузить ваш SWF-файл, но он широко используется, и в то же время веб-мастера пытаются предотвратить загрузку, управляя директивами Apache и .htaccess.

РЕДАКТИРОВАТЬ: Да, вы можете отправлять заголовки прямо из вашего SWF-файла.

var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest(whatever_url);
request.requestHeaders.push(new URLRequestHeader("pragma", "no-cache"));
request.requestHeaders.push(new URLRequestHeader("Expires", "Thu, 01 Jan 1970 00:00:00 GMT, -1"));
request.requestHeaders.push(new URLRequestHeader("Cache-Control", "no-cache, no-store, must-revalidate"));
loader.load(request);

например, этот код утверждает, что предотвращает кэширование SWF-файлов в каталоге кэша браузера пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...