3

他のユーザーにアクセスを許可したくないオーディオ ファイルがいくつかあります。各ファイルはメイン フォルダー内の個別のフォルダーにあり、ここでは「ダウンロード」と呼びます。したがって、「ダウンロード」には他にもいくつかのディレクトリがあり、各ディレクトリ内にはオーディオ ファイルがあります。これらのオーディオ ファイルは、システム上の Web アプリで再生されます。

問題は、現時点では誰でもファイルの完全なアドレスを入力しlocalhost/download/dir/sound.wavてオーディオ ファイルを再生できることです。これは私が起こらないようにしたいことです。これらのファイルは、アプリケーションからアクセスまたはストリーミングされたときにのみストリーミングしたいと考えています。

.htaccess ファイルで次のことを試しました

deny from all

これはページを返しました403 forbiddenが、アプリケーション内からファイルをストリーミングできませんでした

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)localhost.com/.*$ [NC]
RewriteRule \.(mp3|wav)$ - [F]

これにより、ストリームがすべて一緒に無効になり、403またはアプリケーションまたは直接アクセスからストリーミングしなかったものは返されませんでした

最後に、AJAX を使用して、ストリーミングするファイルを保持するスクリプトを呼び出しています。使用できるオプションはありますか?

4

3 に答える 3

4

ユーザーがそれらのファイルにアクセスするのを防ぐことは不可能です

それらを聞くには、ユーザーのコンピューターにダウンロードする必要があります。つまり、アクセスできる必要があります。

最善の方法は、ファイルを暗号化し、プレーヤーで復号化することです。しかし、それでもプレーヤーがリバース エンジニアリングされ、誰かが暗号化キーとアルゴリズムを発見する可能性があります。最終的には、大量の処理時間を無駄にし、実際にアプリケーションの速度を低下させていることがわかります。

于 2013-05-01T09:48:29.177 に答える
0

問題が 1 つだけあります。サーバーは、メディア (アプリケーションまたは他のシステム) を要求したユーザーを、同様のプロトコルを使用してどのように検出するのでしょうか?

ただし、メディアへの最も単純な http 要求を防止したいだけの場合は、トークン交換システムを使用できます。たとえば、アプリケーションが特定の形式でメディアの要求を送信し、サーバーが特定のファイルにアクセスするためのトークンを送信し、アプリケーションが特別な (たとえば、 php) スクリプトがトークンを提供すると、スクリプトはサウンド ストリームを返します。このようにして、メディアへの外部からのアクセスを禁止し、独自のサーバー側の php スクリプトによってのみアクセスされるようにすることができます。

次に、メディア ファイルにアクセスするには、既存のトークンまたは交換プロトコルを知る必要があります。これにより、任意のユーザーが自由にメディアにアクセスすることがなくなります。ただし、以前に言われたように、おそらく「教育を受けたユーザー」から保護する方法はありません。

于 2013-05-01T10:06:30.893 に答える