問題タブ [securitymanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - RMI: 外部リモート オブジェクトの使用
RMI がどのように機能するかを知っていると思ったら、RMI が戻ってきて、わからないと教えてくれます。次の状況:
私は与えました:
- インターフェイス: http://pastebin.com/KxXH1jQ9
- rmiregistry が実行されているアドレス
インターフェイスは、オブジェクトに関する情報を取得するための明確な 3 つの getter メソッドを提供します。3 つのメソッドを呼び出すオブジェクトを検索し、それらの値を出力したいだけです。
ただし、次の実装 ( http://pastebin.com/d4JS0Wai ) はトリックを実行せず、次の例外が発生します。
スレッド「メイン」での例外 java.rmi.UnmarshalException: アンマーシャリング エラー。ネストされた例外: java.lang.ClassNotFoundException: Article at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at rmi.ArticleDisplayer.main(ArticleDisplayer.java:21)
原因: java.lang.ClassNotFoundException: Article at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) ...
また、マシンがコードを実行していないため、とにかく SecurityManager が必要な理由もわかりません。コードは、rmiregistry を実行しているマシンで実行されます。とにかく、これは私のポリシー ファイルです: http://pastebin.com/chGEqceA
swt - Java WebStart (jnlp) 上で実行されている SWT 組み込み Mozilla ブラウザーでの SecurityManager の問題
非標準アプリケーションを開発しています。基本的には、組み込みの Mozilla ブラウザー (mozilla-interfaces-1.9.2.12.jar、mozilla-glue-1.9.2.12.jar) を使用する SWT アプリケーションであり、アプレットを含む html ページを表示する必要があります (これも私が開発したものです)。これらのアプレットは署名され、証明書はキーストアにインポートされます。標準のスタンドアロン Mozilla ブラウザでアプレットを実行すると、すべてがうまく機能します。
SWT アプリケーションを通常どおりに (つまり、SecurityManager を使用しないスタンドアロンの Java デスクトップ アプリケーションとして) 実行しても、すべて正常に動作します。埋め込みブラウザが表示され、アプレットを含む html ページが表示されます。
しかし、このアプリケーションを Java Web Start (jnlp) で実行しようとするとすぐに問題が発生します。私の jnlp は明確に定義されていると思います。インターネットでの議論で見つけたすべてのタグが含まれています。たとえば、
など。私のSWTアプリケーション、それぞれ。すべての jar ファイルが署名されています (アプレットに使用されたものと同じ証明書)。正常に起動し、すべてのアクセス許可と署名なしでは許可されない操作を実行し、SWT ウィンドウも表示します (したがって、SWT 自体は正常に動作します) が、組み込みブラウザーを表示する必要があるときに、UnsatisfiedLinkException が発生します。面白いことに、特定の権限セットで .java.policy ファイルを作成すると、正しく動作し、アプレットも動作します。シャーロック・ホームズの役を演じる私は、この一連の許可が含まれていることを理解しました
それはあなたの誰にとっても意味がありますか?アプリケーション自体が署名されており、jnlp ファイルにタグが存在するという事実を無視する、ある種の特定の SecurityManager で swt mozilla ブラウザが実行されているようです。
アプレットなしでページをロードすると、ブラウザ ウィンドウを表示するには 2 つのアクセス許可が必要です。.java.policy ファイルを使用せず、ユーザー側で追加の設定を行わずに、このアプリケーションを実行したいと考えています。すべてのアドバイスに感謝します。
前もって感謝します。
ボイタ
java - Java Security Manager - 何をチェックしますか?
Java セキュリティに関するこの記事では、次のように述べています。
Java ライブラリ内のコードは、危険な操作が試行されようとしているときはいつでも Security Manager に問い合わせます。
では、これは正確には何を意味するのでしょうか。たとえば、独自の securitymanager を実装し、それを JVM 全体で有効にしたとします。さて、Java ランタイムは、すべての Java 呼び出し (System.out.println() など) ごとにセキュリティマネージャーに相談しdangerous
ますか、それとも System.exit() 、ファイル操作などの API 呼び出しについてのみ相談しますか?
編集:私の質問を明確にさせてください、
securitymanager の可能性を疑っているわけではありません。セキュリティ チェックが危険な API だけに対して行われるのか、それともすべてのメソッド呼び出しに対して行われるのかを尋ねているだけです。大量のコードを含むアプリケーションの場合、どの int がパフォーマンスの大幅な低下を引き起こしますか。
java - セキュリティ マネージャを使用してパブリック メソッド アクセスを防止する
を使用して、特定のクラスが別のクラスSecurityManager
のメソッドを呼び出さないように制限できるという投稿に出くわしたことがあります。public
どうやってそれを行うのですか?
java - Javaでのファイルアクセスの制限
問題:
Javaアプリケーション(アプレットではない)で、特定のファイル操作を、制限されるべきではないクラスのリスト/グループ/パッケージを除くすべてのクラスに制限したいと思います。
具体的には、制限したいのですが…
- ファイル読み取り
- ファイル書き込み
- ファイルの作成
- ファイルの削除
...制限のないクラスを除くすべてのクラスについて、現在の作業ディレクトリ内でのみ実行できるようにします。
SecurityManagerの試み:
この動作を実装するSecurityManagerクラスのサブクラスを実装しようとしましたが、チェックが行われると、提供されるファイル情報はファイル名だけではないようです(何かが不足している場合を除く)。
また、この場合、呼び出しが行われているクラスを見つけて、操作を許可するか例外をスローするかを判断する方法がよくわかりません。このアプローチが機能するために必要なすべての情報を取得する方法はありますか?
ポリシーベースの試み:
Javaポリシーは、ファイル操作などのクラスのアクションを制限することを目的としていることも認識しています。ただし、 .policyファイルを使用して問題を解決する方法を学ぶための優れたリソースを見つけるのに本当に苦労しました。
質問の要約:
1)私が言及したものよりも好ましいかもしれない代替アプローチはありますか?
2)これはSecurityManagerを使用して可能ですか?私は実際にそのようなアプローチをどのように実装すべきかを見逃していますか?
3)これはポリシーファイルを使用して可能ですか?この面で私が見逃した良いリソースはありますか?
私はこれを達成するために投資する必要のあるハードワークの量に実際に不利になることはありません-私はそれに適切にアプローチする方法がわからないだけです。また、私が言及した2つの可能なアプローチについて十分に教えてくれ、自分でそれを実装できるようにするための優れたリソースが非常に不足しています。とりわけ、私は必要に応じて重要な読書を恐れていません!
事前にご協力いただきありがとうございます。
java - ClassLoadingの時間を検出する方法
CLass [A としましょう] を含む TrirdParty API があります。次のような奇妙な静的ブロックがあります。
System.exit()
オーバーライドされたへの呼び出しを防止したいSecurityManager
。SecurityManager
ただし、このブロックが実行される直前をオーバーライドし、その直後にstatic
元のセキュリティ マネージャーを復元したいと考えています。
を置き換える/上書きする/復元する方法を知っていますSecurityManager
。
static
私の問題は、ブロックがいつ呼び出されるか[基本的にクラスがロードされるとき]をどのように決定するSecurityManager
かSystem.exit()
ですSecurityManager
.
静的ブロックが実行されている間のみ、セキュリティ マネージャをオーバーライドすることが重要であることに注意してください。
編集:
ライセンス上の理由から、ソースを変更することはできません。
java - JavaSecurityManager複数のスレッド
カスタムSecurityManagerを使用して、外部からロードされたコードをサンドボックス化しようとしています。私が持っているSecurityManagerは正常に動作します。ここで提案されている多数の投稿と同じアプローチを採用しました。潜在的に危険なコードが実行されるたびにカスタムマネージャーを設定してから、標準マネージャーに戻します。これは正常に機能し、私が望むことを実行します。ただし、アプリケーションはマルチスレッドです。カスタムマネージャーを使用する2つのスレッド、デフォルトのスレッドを使用するスレッドです。これにより、別のスレッドがカスタムセキュリティマネージャーを設定するだけで、信頼できるコードが正しく実行されなくなる可能性があります。これを回避する方法はありますか?あるいは、完全にもっと良い方法はありますか?同じセキュリティマネージャで異なるポリシーを使用することについて話している投稿をいくつか見ましたが、これの良い例を見つけることができませんでした。どんな助けでも大歓迎です。
java - Java: セキュリティ マネージャなし: RMI クラス ローダーが無効
こんにちは、私は RMI アプリケーションを持っており、クライアントからサーバーでいくつかのメソッドを呼び出そうとしています。私は次のコードを持っています:
サーバーは正しくロードされていますが、呼び出そうとするとserver.registerOHLCProvider(provider);
次のエラーが発生します。
ポリシー ファイルを VM 引数として追加しました。次のようになります。
クラスローディングの無効化について何か言い続けているので、どこかに問題があると思います...ありがとう!
tomcat - Tomcat のセキュリティ マネージャー
私はTomcat Javaアプリケーションを持っていて、それを安全にしたいので、危険だと思われるすべてのアクションをブロックするカスタムSecurityManagerを作成しました(おそらくいくつか見逃しましたが、それは別の質問です)。しばらくは問題なく動作していましたが、アプリケーションが動作しなくなり、catalina.out に次のメッセージが表示されました。
最初の行で、gwtchat.server.ScriptBotSecurityManager は私のカスタム SecurityManager であり、関数は checkWrite(FileDescriptor fd) です。これは、アプリケーションでファイルに書き込みたくないのでブロックしました。
もちろん、Tomcat サーバー自体ではなく、アプリケーションのみをブロックしたいと考えています。これどうやってするの?