うーん...
私は現在、非常によく似たものを使用しています (私は MMORPG を開発しています...) - プレイヤーがそれほど待つ必要がないように、ゲームのコンテンツをプリロードする必要があると判断しました。残念ながら、これらのファイルは参照するだけで簡単に逆コンパイルできます。
そのため、パスワードが必要なカスタム圧縮 + 暗号化コンボを作成しました。このパスワードは、必要に応じてサーバーから送信されます。
ただし、あなたの場合、これは最善の方法ではありません。ByteArray は壊れにくいものではありません。基本的には生のバイト データを送信します。もちろん暗号化しない限り(+1)。
もう 1 つの良い方法は、リクエストをトークン化することです (+1)。つまり、PHP では「トークン」を生成し、それをトークン リスト ファイルに書き込みます。トークンは、32 個の英数字のようなものになります。このトークンは、リクエストされた SWF オブジェクト / ページにも渡され、リクエストですぐに使用されます。リクエストは、有効なトークン、つまりトークン リストに記録されたトークンでのみ機能します。使用すると、すぐに削除されます。また、各トークンに時間制限がある場合があります。15秒とか20秒とか。それまでに使用しない場合は、取り外してください。時間制限を超えた場合、ユーザー側 (ロードが長すぎる場合) をリロードする必要があります (手動ではありませんが、スクリプト、または SWF だけをリロードするための iFrame である可能性があります)。
編集:質問の作成者は別の方法で質問しました-彼の目的は、要求されたSWFファイルをローダーアプリケーションのみが到達可能/ロード可能にすることです。他には何もありません。そう:
これは難しいことだと思いますが... クラック/ハッキングが不可能なものを作ることは実際には不可能です。幸いなことに、ネットワーク (より頻繁に攻撃されますが) またはインターネットで実行する方が簡単です。アプリケーションだけでロードできるものを作ることはできません。考えてみれば - 論理的にも不可能です - どちらの場合も (ユーザーが要求した場合とアプリケーションが要求した場合)、ユーザーのコンピューターは 1 つのファイルを要求し、その要求を追跡して複製するか、単に傍受するのは簡単です。前の 2 つのいずれかが機能しない場合は、SWF の逆コンパイルが使用されます。すべての可能性に対抗することについて少し:
A)追跡と複製
これは、FF の Firebug や、Safari の同様に優れた (本当に) Inspector などのツールを使用して簡単に実行できます。これらを使用すると、要求された内容、ヘッダー、および応答 (幸いなことに、要求されたファイルをダウンロードすることはできません。html またはプレーン テキスト MIME でない限り記録されません)、および応答ヘッダーも簡単に確認できます。
これらのツールのいずれかのコンソールで要求されたものとして最終的に表示される場合、コードで要求 URL を難読化しても意味がありません。解決策は次のとおりです。
- リクエストを 1 回だけ行う (上記 - トークン化)
- 「Connection: keep-alive」などの特別なヘッダーをリクエストに使用します。これにより、通常の攻撃者は URL をコピーしてブラウザでリクエストすることが多いため、攻撃が非常に困難になります。ただし、そこでの接続は自動的に「接続」になります。 : close"、サーバー側のコードでそれを確認し、キープアライブ (または「特別な」) 要求のみを受け入れます
- HTTP とは異なるプロトコルを使用します - 残念ながら、これには HTTP の 80 とは異なるポートで通信するためのサーバー側のソケット関数が含まれます... ほとんどのサーバープロバイダーはユーザーにこれを許可していませんが、可能であり、セキュリティが必要な場合は、実行してください。既知のプロトコルを使用するのではなく、必要に応じて何かを使用します。結局のところ、サーバー側とクライアント側の両方を制御するため、通信はとにかく行うことができます
B)傍受
これは少し高度な攻撃ですが、攻撃者がスキルを持ち、ある程度のリソースを持っている場合は、それほど難しくありません。基本的に、これは一種のプロキシを持つことになります(したがって、リソース-ソケットが有効になっているサーバーが必要です。私自身が持っています:D)、彼はそれを使用してブラウザに接続します。ただし、プロキシはコンテンツを転送するだけでなく、同時に記録します。対抗:
- 別のプロトコルを使用する
- そのプロトコルの暗号化 - データが記録されていても問題ではないため - HTTP ヘッダーの後に生のファイル データが続くだけではなくなります (ヘッダーは簡単に削除され、"violá" になります) - クライアント側のアプリケーションだけが知っていますこのデータをどのように使用するか
C)逆コンパイル
これはそれほど難しいことではありません。SWF デコンパイラは今では何も新しいものではなく、アプリケーションのコードは攻撃者に自由に提供されてしまいます。異なるプロトコルを使用している場合でも、攻撃者は多少の努力でそれに侵入できます。ソリューション:
なし- 攻撃者にとってより困難にすることができます - コードを難読化し、コードをたくさん用意します (本当にセキュリティが必要な場合... カオスはあなたの友達かもしれません)。コード - コードをロードする動的にロードされるセカンダリ SWF...