1


1

Zend AMF実装とAMFプロトコルセキュリティ

RemoteObjectを介してZend FrameworkのZend Amfに接続するFlexフロントエンドがあります。 これは、クライアントレイヤー(Flex)とアプリケーションレイヤーおよび永続レイヤー(Zend Frameworkを使用したLAMP)の間でデータを転送する唯一の手段です。 セキュリティに対処するいくつかの方法は次のとおりです。

  1. でmx.messaging.channels.SecureAMFChannelを使用してTLSに対処できます 私のservices-config.xmlファイルと、FlashプレーヤーがHTTPSラッパーにロードされていることを確認し、AMFプロトコルがHTTPの上に階層化されているため、実際にHTTPSを使用しています

  2. RemoteObjectには、AMFを渡すことができるsetCredentialsメソッドがあります ユーザー関連データを保護するための認証ヘッダー。 TLSが実際に安全であると仮定すると、ユーザーを認証した後、エンドポイントでメソッドを公開できます。

  3. クロスサイトスクリプティングやその他の* FLASH *から保護できます 適切に設定されたcrossdomain.xmlの脆弱性

私の質問は、エンドポイントを別のAMFコンシューマーから保護する方法ですか? たとえば、エンドポイントを知っているFlexクライアント以外に別のAMFコンシューマ(crossdomain.xmlおよびFlashサンドボックスセキュリティにバインドされていないFlashではない)がある場合、エンドポイントが公開するメソッドの使用を阻止するものは何ですか?

私の知る限り、基本的にZend Amfエンドポイントに対してFlexアプリケーションを認証する方法が必要です。 AMFコンシューマー認証の後、特定のデータ(ユーザー認証など)を保護するための上記のセキュリティメカニズムがいくつかあります。 swfは逆コンパイルに対して脆弱であるため、ある種の認証メカニズムをFlex swfに埋め込むことができません(swfは信頼できない)。 機密データはユーザー認証を介して保護されていますが、保護されていないデータはほとんど公開されていませんが、私が知る限り、公開されています。

2 Answer


0


誰もがエンドポイントに任意のHTTP要求を送信するのを防ぐことはできません。 Flexアプリケーションがサーバーに対してユーザーを認証し、リクエストに適切な資格情報/セッションIDが含まれている場合にのみサーバーが機密データを提供する場合、すべてが正常です。 できないことは、ユーザーを認証し、ユーザーが認証されたクライアント内にのみ保存することです。 HTTPはステートレスプロトコルであるため、サーバーは各リクエストを個別に承認できる必要があります。 「通常の」WebサイトとAJAXでも同じです。


0


AMFクライアントは、何らかの認証が提供されない限り、誰がそれらを呼び出したかを知ることができません。 Flexが送信するHTTPリクエストは、Flex以外の手段でエミュレートできます。また、ご指摘のとおり、埋め込まれたキーはすべて抽出できます。 したがって、これに対する一般的な解決策はありませんが、HTTPS接続用のクライアント証明書を提供し、サーバーにクライアント証明書をチェックさせた場合、おそらく何かを解決できます。