Как заставить WISA работать как LAMP (защита .mp3s на IIS) - PullRequest
0 голосов
/ 20 сентября 2008

Я создал несколько небольших flash-виджетов, которые транслируют аудио .mp3 с хоста Apache / php. Доступ к mp3-файлу невозможен, и он не сохраняется самостоятельно в кэше браузера.

Для этого я установил разрешение файла mp3 на хосте «владелец: чтение / запись» (числовое значение 600). Это делает так, что только мой .php файл может читать .mp3.

Затем я делаю запрос к своему php-файлу с моего ActionScript, и он передает mp3 в мой виджет. (Если клиент / пользователь просматривает кеш браузера, mp3-файл не найден должным образом)

Это php-код, который транслирует файл:

<?php 
ob_start();
header("Expires: Mon, 20 Dec 1977 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: audio/mpeg");
@readfile($_GET["file"]);
ob_end_flush();
?> 

Кто-нибудь знает, как воспроизвести это поведение с помощью IIS / ASP.Net

 1.) Make it so a file is only accessible to a file on the server.
 2.) Stream that file using an .ASPX or .ASHX?

1 Ответ

2 голосов
/ 20 сентября 2008

Вы на самом деле не защищаете MP3, просто запутываете их. Любой может сохранить их, особенно если они просто запускают отладчик HTTP, такой как Fiddler, чтобы выяснить, какие HTTP-вызовы выполняются. Тот факт, что вы установили их как не кеширующие и проходящие через скрипт PHP, мало чем поможет.

Чтобы получить тот же эффект с использованием ASP.NET, вы должны написать HTTPHandler (возможно, только с .ashx ), настроить все заголовки одинаково, используя context.Response.Headers, затем загрузите файл .mp3 , используя System.IO.FileStream, и отправьте его на context.Response.OutputStream. Посмотрите System.Web.HTTPHandler, System.IO.FileStream и System.Web.HTTPResponse на MSDN для получения дополнительной информации.

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