gpt4 book ai didi

java - 如何防范资源耗尽等漏洞?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:44 25 4
gpt4 key购买 nike

我们碰巧使用了 IBM appscan http://www-01.ibm.com/software/awdtools/appscan/

针对我们的 Java 代码库,它返回了大约 3000 个高严重性漏洞。

其中大部分恰好是系统信息泄漏,当我们在 catch block 中打印堆栈跟踪时它认为发生了这种情况,但我们只打印了它正在发生的文件名和行号,使我们能够更好地调试代码。

还有一些是关于 SQL 注入(inject)、输入验证等。

但是,我的问题是关于资源耗尽(文件描述符、磁盘空间、套接字...),它列出了所有 java.io.BufferedReader.readLine 的实例作为可能的外部攻击。

       InputStream ins=conn.getInputStream();

String inputLine;

if (!preserveLinefeeds) {
BufferedReader in = new BufferedReader(new InputStreamReader(ins));
while ((inputLine = in.readLine()) != null)
pr.readThreadResponse+=inputLine;
in.close();
ins.close();
}

conn 是一个 HttpURLConnection 对象。

如何在代码中添加安全措施来防止这种情况发生?

最佳答案

如果 AppScan 指示与 readLine 关联的拒绝服务漏洞,这可能不是由于对无法关闭流的任何担忧(无论这可能多么重要),而是由于 readLine 的无限性质。由于 readLine 会继续读取输入,直到读取换行符或 CR-LF,如果输入源不可信,您可能会收到大量没有预期 CR-LF 的数据,从而导致内存耗尽。

要解决此问题,您可以确保(通过应用程序外部的机制)将输入大小限制在安全合理的范围内(尽管 AppScan、Fortify 和其他工具会继续提示 readLine),或者,更好的是,您可以用有界读取例程替换您的 readLines,该例程设置将读入缓冲区的字符数的绝对最大值。

关于java - 如何防范资源耗尽等漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12412149/

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