2010-08-04 4 views
6

Sto setacciare la rete per ore cercando una soluzione con solo parziale e non - soluzioni funzionanti da mostrare per i miei sforzi.Come impedire l'accesso diretto/il download ai file mp3/wav e consentire a un lettore flash di accedervi con .htaccess (o PHP)

La soluzione di seguito è sembrata un'ottima soluzione all'inizio, ma impedisce anche al mio flash player di accedere ai file. Posso solo consentire l'accesso da pagine particolari?:

< Files ~ "...">
order allow,deny
deny from all
< /Files>



La soluzione qui di seguito sembrava grande in un primo momento perché non ha permesso alle persone di visualizzare i file nella directory, ma se l'utente conosce l'esatto URL del file musicale, è possibile scaricare il programma:

SetHandler application/x-httpd-php
SetHandler application/x-shockwave-flash

Ora, mi sono imbattuto in this post che costringe a un utente di produrre un nome utente e una password using htaccess ma io finestra di dialogo si apre quando sullo schermo flash player. C'è un modo per la pagina di inviare le informazioni di accesso senza che l'utente faccia qualcosa?



Se questo non è un metodo sicuro, qualcuno può suggerire un metodo sicuro e relativamente straight-forward di implementare questa funzionalità di restrizione? URL ed esempi sarebbero molto apprezzati

P.S. Questo è un sito WordPress, quindi userò PHP come linguaggio di programmazione per implementare qualsiasi soluzione.

P.S. Cercando di bloccare i principianti dal download, NON hacker/cracker/maghi internet.

Grazie

risposta

8

Poiché PHP è disponibile, utilizzarlo per proteggere i file. Non li abbiamo in loro nella radice web, ma da qualche parte che è accessibile a PHP. Poi generare un URL one-time-uso come:

<?php 
    $unique = md5(uniqid()); // 32 hex characters 
?> 

Poi memorizzare tale valore unico nella sessione/server/db e hanno un'altra pagina convalidare la stringa univoca prima lo streaming del file:

<a href="streamer.php?id=6dd4566eb245627b49f3abb7e4502dd6">Stream Me</a> 

Assicurati di far scadere quel gettone unico dopo il primo utilizzo (o forse dopo alcune volte se ti senti generoso).Non impedirà comunque ai duri di catturare lo stream HTTP, ma dovrebbe impedire il collegamento casuale.

+1

-1 uniqid() da solo è un numero casuale molto debole e non è pensato per fermare gli attacchi. Ulteriore più md5() non rende il valore più casuale. Oltre a questo questo è quasi identico al mio post ma contiene meno informazioni. – rook

+1

@Rook: ho spostato uniqid() in una chiamata md5() per assicurare che i caratteri di output siano tutti compatibili con l'URL, non per migliorare la sicurezza crittografica. Potrebbe essere del tutto inutile. E anche se uniqid() può essere debole, probabilmente in questo caso è "abbastanza buono" per interrompere il collegamento diretto. Se puoi migliorare le informazioni/gli esempi forniti, aggiungilo alla tua risposta e lascia che si svegli. – Goyuix

0

Qualcuno sarà sempre in grado di apparire come se sono in esecuzione flash e in grado di scaricare la tua musica. TamperData può essere utilizzato per visualizzare tutto il traffico generato dal browser (incluso il flash) e avere la capacità di riprodurre, intercettare e modificare tutte le richieste. Flash è facile da decompilare, ma probabilmente non è necessario.

L'unica cosa che puoi fare è quello di alzare il tiro e per evitare che il collegamento diretto ai tuoi contenuti. Puoi farlo usando PHP per limitare l'accesso al media. Metti tutti i media fuori dalla web root, o proteggi la directory con un .htaccess deny from all. Prima che l'applicazione flash invii una "richiesta di download", assegna all'app flash un token temporaneo monouso (cryptographic nonce). Questo token viene quindi utilizzato nella richiesta successiva per scaricare la musica da un file PHP. È facile imbrogliare, ma è il meglio che puoi fare.

+0

So che da esso è su Internet non può mai essere veramente sicuro, ma sto prendendo di mira il tipico utente techie che potrebbe vedere il file playlist.xml posizione e sfogliarlo, aprirlo e quindi inserire gli URL dei file mp3 inclusi. NON sto cercando di bloccare gli hacker e i cracker nel loro selvaggio west. – Julian

+0

@ Julian Sto parlando di difendere contro i bambini, il più semplice degli attacchi. È banale intercettare il traffico e decompilare le applicazioni flash. È possibile ottenere un server veramente sicuro, ma questo servizio è intrinsecamente imperfetto. Quello che ho suggerito è quello che i principali venditori di musica vendono come bleep. – rook

+0

@Julian inoltre non usa parole come "cracker" e "wild west". Stai ricevendo i fatti da un hacker molto abile dei cappelli bianchi. – rook

3

Come sottolinea The Rook, non è possibile averlo in entrambi i modi. Non puoi dare e non dare ai tuoi utenti l'accesso ai tuoi dati. Non importa quanto sia complesso il tuo schema di autenticazione, gli utenti competenti saranno sempre in grado di aggirarlo perché, per far funzionare il Flash player, devono avere le credenziali. Personalmente, ritengo che la soluzione corretta sia riconoscere che non è possibile impedire a un determinato utente di salvare i propri contenuti e semplicemente lasciarli. Se insisti a renderlo più difficile, quale soluzione è giusta per te sarà determinata dal segmento di utenti con cui vuoi essere efficace e dal lavoro che sei disposto a mettere in atto.

Una soluzione semplice sarebbe quella di generare una chiave una tantum ogni volta che si serve una pagina di visualizzazione e quindi di servire il contenuto attraverso uno script PHP che la controlla. In questo modo l'utente deve almeno caricare la pagina del visualizzatore per il contenuto che desidera ed esaminarne l'origine per estrarre la chiave invece di inserire semplicemente un URL nella barra degli indirizzi del browser. Tuttavia, se il tuo sito diventa del tutto popolare, qualcuno probabilmente renderà disponibile uno script che lo faccia automaticamente. Ad esempio, vedi youtube-dl, uno script Python che scarica video di YouTube.

Nel tuo post hai menzionato la password che protegge i file con Apache. Potrebbe essere possibile che l'applicazione Flash Player invii l'autenticazione HTTP, ma dubito che tutti i giocatori esistenti lo supportino e modificando uno per farlo richiederebbero sia le fonti che l'esperienza con ActionScript. Qualunque soluzione che sopravviverà a tali attacchi banali come leggere la fonte della pagina probabilmente richiederà la modifica del giocatore.

+0

Mi scuso per la ridondanza. Durante la composizione di questo messaggio non ricevevo le solite notifiche "qualcun altro ha emesso una risposta/modificato la risposta". –

-1

C'è un'altra soluzione provata e abbastanza riuscita. Ho provato a caricare la canzone in un iframe. E l'accesso diretto alla canzone sarà limitato nel codice php.

Problemi correlati