0

ユーザーがページソースを表示して簡単に読み取れるようにしたくないonclick関数に変数を渡す必要があります。文字列をエンコードしてから、文字列を渡す関数でデコードしたいと思います。

私はこれをGoogleで検索しましたが、URLを安全に渡すためのエンコード/デコードURLに関する情報しか見つかりませんが、一般的な文字列は見つかりません。JavaScriptにはエンコード/デコード機能が組み込まれていますか(PHPを使用してエンコードされた文字列を送信するため、PHPにも組み込まれていることを願っています)?

4

3 に答える 3

1

JavaScriptからURLを取得するには、代わりにIDを使用してみてください。そのIDをサーバーサイドでURLに変換する必要があります。次のような単純な配列を使用できます。

function getLink($songID) {
    $decodeArray=array(
        1=>"www.mysite.com/myfirstsong.mp3",
        2=>"www.othersite.net/othersong.mp3");
    return $decodeArray[$songID];
}

die(getLink($_GET['songID']));//send back the URL

または、その翻訳phpコード内でデータベースを使用できます(上記)

この「応答サービス」を実行する方法は2つあります。1)XMLHttpRequestに(phpスクリプトからの)urlを使用して応答し、戻り値をjavascriptからフラッシュクライアント側(上記のコードのように)に一時停止するか、2) Javascriptへの「OK」ステータスメッセージにのみ応答し、URLをフラッシュプレーヤーに直接送信します。これを行うには、Actionscriptで少しコーディングできる必要があります。

問題は、実際の曲の場所(その曲を見つけることができる読み取り可能なURL文字列)についてクライアント(またはFlash)に通知する必要があるため、クライアントに戻って、スニファー(パケットアナライザー)ネットツール。上記のコードの場合、そのphpスクリプトを直接クエリして、スニッフィングすることなく画面上の回答を読み取ることができます。

これを防ぐには、httpsを介してFlashと直接通信する必要があるか(動作するかどうかはわかりません)、URLをまったく送信せず、代わりにFlash間のソケット接続を使用してその曲のコンテンツをFlashアプリケーションに直接ストリーミングします。プレーヤーのクライアントサイドと(自家製の)phpソケットサーバー。

于 2013-03-14T19:12:06.223 に答える
1

実装しようとしているのはDRMですが、これはブラウザやJavaScriptを使用して実装することはできません。もちろん、ユーザーがサウンドファイルにアクセスするのをいつでも難しくすることはできますが、ユーザーを簡単に怖がらせる可能性があることに注意してください。

できることは、サーバー側で大きなランダム(たとえば、8〜16バイト程度)を生成するか、カウンターをハッシュすることです。次に、指定されたランダムな値を使用して、MP3を1回だけダウンロードできるようにします。次回、ユーザーがファイルをダウンロードしたいとき、彼は新しいランダムを取得します。ランダムは、ユーザーが次のファイルを推測できないほど十分に大きいです。すでに述べたように、もちろん最初のダウンロードを禁止することはできないので、ブラウザのキャッシュで遊ぶのに十分賢い人は誰でも簡単にスキームを破ることができます。

また、データストリームを受信して​​デコードするフラッシュプレーヤーを埋め込んで、専門家以外の人が簡単にデコードできない形式でデータを送信することもできます。これをランダム化されたURLメソッドと組み合わせることができます。

16進数を使用するか、base64を使用してからURLエンコード関数を使用して、ランダム値をURLエンコードできます。

于 2013-03-14T19:19:14.310 に答える
1

あなたがやろうとしていることは実現不可能です。使用する復号化ロジックに関係なく、JavaScript で消費者のコンピューターに送信する必要があります。つまり、Firebug を使用する十分にスマートなスクリプトキディなら、すべての秘密を簡単に復号化できます。さらに、クライアント側のブラウザー コンソールでデータを変更し、サーバーをだますことができます。

この種の秘密は、サーバー側、おそらくセッション状態、または現在ログインしているユーザーに関連付けられた何かに保持することをお勧めします。クライアントに送信しないでください。

于 2013-03-14T18:45:50.340 に答える