Come faccio a far funzionare WISA come LAMP (Protezione di .mp3s su IIS)
Domanda
Ho creato alcuni piccoli widget flash che trasmettono in streaming audio .mp3 da un host Apache / php. Non è possibile accedere direttamente al file mp3 e non lo salva da solo nella cache del browser.
Per fare ciò ho impostato l'autorizzazione per il file mp3 sull'host su " owner: read / write " (valore numerico 600). Questo fa sì che solo il mio file .php possa leggere .mp3.
Quindi faccio una richiesta al mio file php dal mio ActionScript e trasmette l'mp3 al mio widget. (Se il client / utente cerca nella cache del browser il file mp3 non viene trovato come desiderato)
Questo è il codice php che trasmette il file:
<?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( Ho creato alcuni piccoli widget flash che trasmettono in streaming audio .mp3 da un host Apache / php. Non è possibile accedere direttamente al file mp3 e non lo salva da solo nella cache del browser.
Per fare ciò ho impostato l'autorizzazione per il file mp3 sull'host su " owner: read / write " (valore numerico 600). Questo fa sì che solo il mio file .php possa leggere .mp3.
Quindi faccio una richiesta al mio file php dal mio ActionScript e trasmette l'mp3 al mio widget. (Se il client / utente cerca nella cache del browser il file mp3 non viene trovato come desiderato)
Questo è il codice php che trasmette il file:
1.) Make it so a file is only accessible to a file on the server.
2.) Stream that file using an .ASPX or .ASHX?
Qualcuno sa come riprodurre questo comportamento usando IIS / ASP.Net
<*>GET["file"]);
ob_end_flush();
?>
Qualcuno sa come riprodurre questo comportamento usando IIS / ASP.Net
<*>Soluzione
Non stai davvero proteggendo gli MP3, ma li stai solo offuscando. Chiunque può ancora salvarli, specialmente se attivano un debugger HTTP come Fiddler per capire quali chiamate HTTP vengono effettuate. Il fatto che tu li abbia impostati per non memorizzare nella cache e per passare attraverso uno script PHP non aiuta molto.
Per ottenere lo stesso effetto usando ASP.NET, dovresti scrivere un HTTPHandler
(probabilmente appena fuori da un .ashx ), impostare tutte le intestazioni allo stesso modo utilizzando context.Response.Headers
, quindi caricare il file .mp3 utilizzando System.IO.FileStream
e inviarlo a context.Response .OutputStream
. Cerca System.Web.HTTPHandler
, System.IO.FileStream
e System.Web.HTTPResponse
su MSDN per ulteriori informazioni.