gpt4 book ai didi

Java 输入流限制 : protecting against DoS attacks

转载 作者:行者123 更新时间:2023-11-30 11:57:44 25 4
gpt4 key购买 nike

我正在编写一个工具,在给定任何 URL 的情况下,该工具会定期获取其输出。问题是输出可能不是简单轻量级的 HTML 页面(在大多数情况下是预期的),而是一些繁重的数据流(即直接来自/dev/urandom,可能是 DoS 攻击)。

我正在使用 java.net.URL + java.net.URLConnection,将连接和读取超时设置为 30 秒。当前正在由 java.io.BufferedReader 使用 readLine() 读取输入。

可能的解决方案:

  1. 逐字节使用java.io.BufferedReader.read(),对它们进行计数并在达到限制后关闭连接。问题是攻击者可能每 29 秒传输一个字节,因此几乎不会发生读取/连接超时(204800B * 29sec = 68 天)
  2. 将线程执行时间限制为 1-5 分钟并使用 java.io.BufferedReader.readLine()。这里有什么问题吗?

我想重新发明轮子,解决方案非常简单,只是我没有想到。

提前致谢。

最佳答案

您可以通过自己编写一个 FilterInputStream 来封装 bhhis,它强制执行您想要强制执行的任何内容并将其放置在堆栈底部,围绕连接输出流

但是,这和您建议的补救措施仅在输出以分块传输模式到达时才有效。否则 HttpURLConnection 可以在您读取任何响应之前缓冲整个响应。通常的解决方案是在防火墙中设置过滤器。

关于Java 输入流限制 : protecting against DoS attacks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3625695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com