2016-06-13 15 views
0

私のJava Web Startアプリケーションでは、指定したドメインからのみ実行できるように制限したいと考えています。私のアプリが実行されたURLを取得するにはどうすればよいですか?それが正常に動作し、私に起源を示していますが、私のJNLPファイル内のcodebaseパラメータが空の場合にのみjnlpが実行されたURLを取得するには?

final BasicService bs = (BasicService) ServiceManager.lookup("javax.jnlp.BasicService"); 
final URL codeBase = bs.getCodeBase(); 

:私はこの方法を試してみました。それが設定されていると、私のjnlpが実行された場所からのURLが必要なため、コードベースのURLが表示されます(別のサーバーでlibsをホストすると間違っています)。たとえば、私は "www.jnlpdomain.com"からjnlpを実行しますが、コードベースは "www.libdomain.com"です - この場合、最初のURLを知りたいと思います。私は、Javaコンソールログを確認すると、私は次のことを見ることができます:

JNLP Ref (absolute): www.jnlpdomain.com/my_jnlp_file.jnlp 
.... (some few lines) 
=====CODEBASE=====: www.libdomain.com (this line is printed by me with the bs.getCodeBase()) 

だから私は、ホスト名が始まる、ログの最初の行に正しく印刷されていることを確認することができます

JNLP Ref (absolute): .... 

私が取得できますかこれは私のアプリでは、私はドメインを検証することができますか? JAR File Manifest Attributes for Security: Codebase Attribute

答えて

1

ルック:

Codebase属性は、特定のドメインにJARファイルのコードベースを制限するために使用されます。この属性をにすると、悪意のある目的のために別のWebサイトにアプリケーションを再デプロイすることを防ぐことができます。

+0

私は知っていますが、これは各クライアント用のカスタムビルドを準備する必要があることを意味します。私はこれを避け、それぞれのクライアントで動作する一般的なビルドを1つだけ持っていますが、(特定のドメインの下で)正しく使用しているかどうかを確認します。 –

+0

* "これは、各クライアント用のカスタムビルドを用意する必要があることを意味します。*ビルドファイル内の1行になります!あなたはそれを難し​​くする.. –

+0

それは私のための解決策のいくつかの種類ですが、私は "JNLP参照(絶対)..."でこのホスト名はどこから来るのか知りたいのですがコード。 –

関連する問題