Grizzly Project是否负责缓冲区溢出或拒绝服务攻击?

时间:2010-12-14 01:50:15

标签: java jersey denial-of-service grizzly

我搜索了很多,但仍然不明白使用Grizzly是否意味着我可以防止这些攻击,或者我是否应该做更多的努力?

目前,我在我的程序中唯一做的就是通过以下代码将我的资源类(由@Path注释 - 我正在使用Jersey)部署到Grizzly:

final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages","MyServer.resources");
SelectorThread threadSelector;
try{
    threadSelector = GrizzlyWebContainerFactory.create(
 uri, initParams);
    System.out.println("Press enter to stop server...");
    System.in.read();
    threadSelector.stopEndpoint();
}catch(...){...}

在我的资源方法中,我可以访问一个JAXB bean列表,我没有为它指定任何大小(我不知道是否可以检查此时的大小以避免获取大量请求 - 如果有可能,如果有人告诉我,这将是一个很大的帮助!),所以,我担心攻击者可能发送连续和大的请求(我的正常请求大小应该少于6个bean!)并导致拒绝服务 - 我刚开始学习安全风险并处理它们,这是我的第一次尝试!

我将检查请求处理程序方法主体中的大小,即服务器完全接收请求之后的大小。这够了吗?

Grizzly文档说它有一个很好的缓冲区管理(我可能会将缓冲区溢出与拒绝服务混合在一起),但我不知道是否应该设置任何设置,还是默认保护?

编辑:

对于我的部分问题,我收到了一个很好的答案,但是,我仍然在寻找一些特别关于灰熊或泽西岛的提示以及是否有一个单一的入口点,我可以对所有传入进行一些检查请求?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果你使用的是Java,你几乎可以免受经典的缓冲区溢出攻击,除非你使用本机代码库来处理你从网上获得的东西。

另一方面,保护自己免受拒绝服务攻击往往需要采用整体系统方法。

修改

通过“整个系统”方法,我的意思是考虑到对网络带宽,基础架构和后端服务器以及Web服务器的影响。例如,无论您如何实施网络服务器,针对您的网络带宽或DNS的攻击都可能会让您无法使用。另一方面,有人可以定位您的Web应用程序的各个方面;例如知道特定查询非常昂贵......或者它泄漏资源并最终导致应用程序崩溃。

(我不是这方面的专家。我只是想指出,只看你的网络服务器平台是不够的......如果你真的关心防御DDoS。)