0

我有一个 Tomcat Java 应用程序,我希望它是安全的,所以我创建了一个自定义 SecurityManager,我在其中阻止了所有我认为危险的操作(我可能错过了一些,但这是另一个问题)。它工作了一段时间,但后来我的应用程序停止工作,在 catalina.out 我看到以下消息:

12/07/2011 10:31:42 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler process
SEVERE: Error reading request, ignored
java.lang.SecurityException
    at gwtchat.server.ScriptBotSecurityManager.checkWrite(ScriptBotSecurityManager.java:167)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:234)
    at java.net.SocketOutputStream.<init>(SocketOutputStream.java:58)
    at java.net.AbstractPlainSocketImpl.getOutputStream(AbstractPlainSocketImpl.java:411)
    at java.net.Socket$3.run(Socket.java:857)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.Socket.getOutputStream(Socket.java:854)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:163)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)

在第一行中,gwtchat.server.ScriptBotSecurityManager 是我自定义的 SecurityManager,函数是 checkWrite(FileDescriptor fd),我阻止了它,因为不希望我的应用程序写入文件。

当然,我只想阻止我的应用程序,而不是 Tomcat 服务器本身。我怎样才能做到这一点?

4

0 回答 0