Jythonを使用しているユーザーがPythonコードを処理する必要があるJavaサーバーをプログラミングしています。明らかに、私は、クラッカーがファイルやシステムコマンドにアクセスするリスクを伴わずに実行できません。私は何時間も特定のスレッドのファイルアクセス権を制限する方法を探していましたが、私が得た最も近いものはアプリケーション全体のファイルアクセス権を制限していました。このようなことを行うクラスが実装されていますか、それを行うためのメソッドがありますか?スレッドのJavaファイルのアクセス許可
答えて
java.lang.SecurityManagerを試してみることができます。セキュリティマネージャを使用してスレッドごとに異なるセキュリティ設定を行うことについては、this questionも参照してください。
あなたは、このようにセキュリティマネージャとセキュリティポリシーを設定することができます。のSecurityManagerは、使用するセキュリティマネージャであり、例えばhereのために説明したようpolicyfileをは、ポリシーの仕様が含まれている
jython -Djava.security.manager=securitymanager -Djava.security.policy=policyfile
ところ。あなたは、セキュリティポリシーのソースとしてポリシーファイルを使用する場合は、ここでは一例です:
grant {
permission java.security.AllPermission;
}
Jythonのは、次のように起動するためにいくつかの権限が必要になります。
grant {
permission java.io.FilePermission "${user.home}${/}-", "read, write";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getProtectionDomain";
};
(これはあなたのCACHEDIRを前提としてい現在のユーザーのHOMEディレクトリの下にあります)。これは、現在のユーザのHOMEの下にあるファイルへの読み書きを許可し、ファイルシステムの他のすべての部分へのアクセスを許可しないことに近いものを実行します。ここで結果(これは現在の作業ディレクトリであるため、最初のオープンは、()現在のユーザのホームディレクトリの下のファイルを参照)である:
>>> f1=open('test.txt', 'r')
>>> f2=open('/tmp/test.txt', 'r')
Traceback (innermost last):
File "<console>", line 1, in ?
java.security.AccessControlException: access denied (java.io.FilePermission /tmp/test.txt read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:342)
at java.security.AccessController.checkPermission(AccessController.java:553)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.File.exists(File.java:748)
at org.python.core.PyFile._setup(Unknown Source)
at org.python.core.PyFile.file_init(Unknown Source)
at org.python.core.PyFile$1.new_impl(Unknown Source)
at org.python.core.PyType.invoke_new_(Unknown Source)
at org.python.core.PyType.type___call__(Unknown Source)
at org.python.core.PyType.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.pycode._pyx2.f$0(<console>:1)
at org.python.pycode._pyx2.call_function(<console>)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyCode.call(Unknown Source)
at org.python.core.Py.runCode(Unknown Source)
at org.python.core.Py.exec(Unknown Source)
at org.python.util.PythonInterpreter.exec(Unknown Source)
at org.python.util.InteractiveInterpreter.runcode(Unknown Source)
at org.python.util.InteractiveInterpreter.runsource(Unknown Source)
at org.python.util.InteractiveInterpreter.runsource(Unknown Source)
at org.python.util.InteractiveConsole.push(Unknown Source)
at org.python.util.InteractiveConsole.interact(Unknown Source)
at org.python.util.jython.main(Unknown Source)
java.security.AccessControlException: java.security.AccessControlException: access denied (java.io.FilePermission /tmp/test.txt read)
>>>
このポリシーを送信いただきありがとうございます。私は他のどこにも存在するとは思わない。私はいくつかの他の必要なパーミッションを下記の答えに掲示しました。 –
のJython 2.5.2で、私は、これらの許可が必要であることが分かっ:
permission java.io.FilePermission "${user.dir}${/}path${/}to${/}python${/}-", "read";
permission java.util.PropertyPermission "user.dir", "read";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getProtectionDomain";
(コメントが読みやすくフォーマットしないであろうことを除いて、これは、受け入れ答えにコメントする必要があります。)
- 1. Java 6でのNTFSファイルのアクセス許可
- 2. C#アクセス許可とスレッド
- 3. ファイルのアクセス許可
- 4. のJavaアプレットソケットサーバーのアクセス許可
- 5. gitoliteとファイルのアクセス許可
- 6. .emacsファイルのアクセス許可?
- 7. WCFファイルのアクセス許可?
- 8. Apacheファイルのアクセス許可
- 9. WordPress Synologyファイルのアクセス許可
- 10. Google APIファイルのアクセス許可?
- 11. PHP ssh2_scp_sendファイルのアクセス許可
- 12. send_fileとファイルのアクセス許可
- 13. フリップビューデータバインディングとファイルのアクセス許可
- 14. Java - DocumentDB無許可アクセス
- 15. Javaスクリプト - DOMアクセス許可
- 16. WindowsシステムファイルのJavaとNTFSのアクセス許可
- 17. Javaの変数のアクセス許可
- 18. JavaでWindowsファイルのアクセス許可を操作する
- 19. ファイルのアクセス許可はディレクトリのアクセス許可を継承しません
- 20. Zipファイル用のファイル許可Java
- 21. イメージエディタのKenticoファイルのアクセス許可
- 22. ファイルのアクセス許可セキュリティのapache
- 23. C#アプリケーションのファイルとフォルダのアクセス許可
- 24. ファイルのアクセス許可の問題javac
- 25. django /ファイルのアップロードのアクセス許可
- 26. Joomlaの拡張子、ファイルのアクセス許可
- 27. ファイルのアクセス許可で一定のチャレンジ
- 28. Docker Containerでのファイルのアクセス許可
- 29. PHPファイルのアクセス許可のエラー
- 30. Webサーバー上のファイルのアクセス許可?
関連(まだオープン)質問:http://stackoverflow.com/questions/6744553/javaスレッドごとのセキュリティマネージャー – Thilo
(Jythonの代わりにRhinoを使用):http:// stackoverfl ow.com/questions/93911/how-can-you-run-javascript-using-rhino-for-java-in-a-sandbox – Thilo
inheritablethreadlocalは面白いオプションですが、あなたが注意しなければならないのは、既に生成されたスレッドに伝搬されるスレッドプールに提出されたコード)。だから、恐らく壊れやすい解決策のようなものでしょう。 – jtahlborn