在Java安全模型下,可以阻止来自不受信任类的最危险的操作,但上次我检查(几年前)时,不受信任的代码仍然有可能通过不断分配内存,直到出现OutOfMemoryException崩溃为止,执行拒绝服务攻击。现在看来,我看不到情况有任何改善。
我要求在Java应用程序中运行来自第三方的不受信任的代码,我想知道是否有可能以某种方式限制类或线程在Java安全模型中可以分配的堆/堆栈空间。从而防止基于内存分配的DoS攻击。我知道-Xss,但据我所知,它会限制所有线程,其中大多数线程不需要限制。
我还考虑为不受信任的代码创建一个容器,这些不受信任的代码将在自己的JVM中运行,并通过套接字与主应用程序通信,或者对不受信任的代码进行一些静态分析。然而,这两个听起来都比我希望的要多,尽管如果有人知道这方面的技巧或开源库,我会很感兴趣。
那么,有没有一种方法可以限制线程分配给自己的内存量,或者其他一些方法来防止Java中的内存分配拒绝服务攻击呢?
发布于 2009-02-12 10:35:38
目前,Java中的标准API无法做到这一点。
越来越多的人对此感兴趣,并且正在进行名为Resource Consumption Management API的JSR,这可能是一些值得研究的东西。
发布于 2009-02-12 13:48:24
您将需要在单独的进程中运行不受信任的代码。也许仍然有办法使用DoS,例如在旧版本的Windows上,你可以很容易地用完所有的GDI资源(最近没有尝试过,现在我们有了Swing)。
https://stackoverflow.com/questions/540738
复制相似问题