【发布时间】:2010-09-02 09:17:22
【问题描述】:
我正在编写一个工具,给定任何 URL,它会定期获取其输出。问题是输出可能不是一个简单而轻量级的 HTML 页面(在大多数情况下都是预期的),而是一些繁重的数据流(即直接来自 /dev/urandom,可能是 DoS 攻击)。
我正在使用java.net.URL + java.net.URLConnection,将连接和读取超时设置为 30 秒。当前输入正在被java.io.BufferedReader 读取,使用readLine()。
可能的解决方案:
- 逐字节使用
java.io.BufferedReader.read(),对它们进行计数并在达到限制后关闭连接。问题是攻击者可能每 29 秒传输一个字节,因此读取/连接超时几乎不会发生(204800B * 29sec = 68 天) - 将线程执行时间限制为 1-5 分钟并使用
java.io.BufferedReader.readLine()。这里有什么问题吗?
我想重新发明轮子,解决方案非常简单,只是没想到。
提前致谢。
【问题讨论】:
标签: java inputstream ddos