jjkingの日記: SecurityManager について
日記 by
jjking
内部で任意の URL からファイルを持ってくる servlet を作ったのだが、接続先 URL のチェックをしないと危険だということで Java の SecurityManager にやらせてみようということになった。
Servlet エンジンは Tomcat4.x なので catalina.policy というファイルにエントリを書いて、catarina を -security オプションつきで走らせれば SecurityManager が有効になるらしい。テストとして、次のようなエントリを書いて myapp 以下の servlet を動かしたところ、確かに外部サイトに接続にいったときに "access denied" で却下される。いい感じだ。
grant codeBase "file:${catalina.home}/webapps/myapp/-" {
};
ここでひとつ疑問が生じた。やりたいことは、ある特定のサイトのみ接続不可としてその他はOKというセキュリティポリシーなのだが、どう書くと実現できるだろう?すべてのサイトが OK というのは以下でよいようだ。
grant codeBase "file:${catalina.home}/webapps/myapp/-" {
permission java.net.SocketPermission "*", "connect";
};
しかし、ここから特定のサイトのみ除くというような記述方法が見当たらない。接続する可能性のあるサイトを全部列挙しないといけないのか?あるいは自分で SecurityManager を作らないといけないのか? ...困った
SecurityManager について More ログイン