いくつかの金融取引を実行するためにいくつかの Web サービスに接続するアプリケーションを Flex で設計しています。Web サービスは https プロトコルを使用して保護されており、リクエストごとにログイン時に作成されたユーザー トークンを要求しています。これは、ユーザーの認証と承認に使用されます。ここまでは順調ですね。
重要な点は、すべての Web サービスが粗粒度であるとは限らないことです。例を挙げると、EnoughFounds と Transfer という 2 つの Web サービス メソッドを使用できます。したがって、メソッド EnoughFounds が「true」と応答した後でのみ、Transfer を実行します。このロジックは、Flex アプリケーション コード内でプログラムされます。
提示されたシナリオは次のとおりです。誰かがアプリケーションをダウンロードして逆コンパイルした場合。次に、ステップ EnougFunds が実行されないようにコードを変更します。または、EnoughFunds ステップを通過せずに転送を実行する他のテクノロジで、まったく新しいクライアントを作成することもできます。転送を実行すると、ユーザーはサーバー上で承認および認証されます。しかし、彼は実際の資格情報を使用しているため、転送を実行できます。彼がスキップしたチェックは、セキュリティ ドメインではなく、ビジネス ロジックに属しています。アプリケーションを実行しているコードが、私が書いてユーザーがダウンロードした変更されていない Flex コードであることを確認する必要があります。どうやってやるの?シーケンスがサーバー上で実行されるようにサービスを書き換えることができることを知っています。
この特定の問題を解決するセキュリティ メカニズムがいくつかあるに違いないと私には思えます。
ベスト プラクティスに関するアドバイスを求めているわけではないことに注意してください。私の要件は、サーバー側で何も変更しないことです。サービスを変更せずに、プロトコル レベルでシーケンスを保護するにはどうすればよいですか?