2009-04-30 8 views
0

私はJBoss Web Servicesを支払いサービスアプリケーションに使用しています。ある時点では、支払いサービスプロバイダへのリモートSOAP呼び出しを行う必要があり、ユーザー名トークンで認証する必要があります。JBossWSでユーザー名トークンを使用すると、メモリからパスワードを消去するにはどうすればよいですか?

Map<String, Object> requestContext = ((BindingProvider)port).getRequestContext(); 
requestContext.put(BindingProvider.USERNAME_PROPERTY, "foobar"); 
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "changeme"); 

しかし、ここでの問題は、「changemeを」パスワードはStringオブジェクトとしてメモリに今あるということであると私は制御することはできません:

私はJBossWSのでこれを行う方法を知っている唯一の方法は、このようなものですそれがガベージコレクションされるときにオンにします。攻撃者がこの時点でメモリをダンプすると、資格情報を見つけることができます。

JBossWSでセキュリティ保護されたSOAP呼び出しを行うもう1つの方法はありますか?ここでは、パスワードがメモリ内にどれだけ長く残っているかを制御できますか?

答えて

0

私は確かにそこに方法がないと確信しています。文字列はJavaでは不変なので、文字列を書き換えることはできません。バイト配列を使用してパスワードを格納することができ、そのバイト配列を書き換えることができます。しかし、あなたはおそらく、あなたがとにかくネジ止めされるよりも、攻撃者は、メモリダンプを取得するにはあなたのマシンにenougのアクセス権を持っている場合、他の側では...とにかく、いくつかの点でStringに

それを変換する必要があります。攻撃者が既に多くのアクセス権を持っている場合、彼は自分が望むものを何でもできる。

関連する問題