有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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) 个答案

  1. # 1 楼答案

    如果您使用的是Java,那么您几乎不会受到经典的缓冲区溢出攻击,除非您使用本机代码库来处理从网络上获得的内容

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

    编辑

    我所说的“整个系统”方法,是指考虑对网络带宽、基础设施和后端服务器以及web服务器的影响的方法。例如,针对网络bandwith或DNS的攻击可以让您不必考虑如何实现Web服务器。另一方面,有人可以针对您的web应用程序的各个方面;e、 g.知道一个特定的查询非常昂贵。。。或者它会泄露资源,最终导致应用程序崩溃

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