我们的应用程序中已报告以下安全漏洞-
xyz.java第119行对readLine()的调用可能使攻击者能够 导致程序崩溃或以其他方式使其无法使用 用户。
具有漏洞的代码
报告了评论行-
BufferedReader reader = new BufferedReader(new InputStreamReader(
httpConnection.getInputStream()));
String inputLine;
StringBuffer okResponse = new StringBuffer();
while ((inputLine = reader.readLine()) != null) { //readLine() on this line has been reported
okResponse.append(inputLine);
}
reader.close();
return okResponse.toString();
针对相同内容的补救措施-
验证用户输入,以确保不会引起不当行为 资源利用率。
但是,尚不清楚可以确切验证哪些内容。有指针吗?
答案 0 :(得分:2)
理论上,攻击者可以通过httpConnection向您发送无限量的数据。由于您尝试消耗所有资源,因此可能会使您的应用程序(OutOfMemory)崩溃。
我假设您对okResponse
具有一定的格式和长度,
因此您最好检查一下。
请确保您已阅读以Subhas
链接的Luis Muñoz
的答案,
(Most Robust way of reading a file or stream using Java (to prevent DoS attacks)),
其中包含一些用于从流中读取内容的更多实现细节。
另一个问题可能是攻击仅使连接保持打开状态而不发送任何数据。我想应该在某个时候断开连接,否则线程可能会永远被阻塞。
编辑:
由于您的代码没有显式包含它,因此您还应该添加一个try ... finally ...
块以确保正确关闭了资源。