gpt4 book ai didi

java - HTTP服务器: what to do if header received is too long? 如何管理流?

转载 作者:行者123 更新时间:2023-12-01 13:18:03 24 4
gpt4 key购买 nike

我做了一个HTTP服务器,这里有一些问题。比方说,当服务器接收 HTTP header 时,它也会计算接收到的数据大小。如果某个黑客尝试发送 100 MB 的 header ,并且服务器配置为接受最多 1 MB 的 header - 在这种情况下如何继续?我可以关闭连接,或者打破这个循环并发送带有一些错误代码的响应:

 BufferedInputStream is = new BufferedInputStream(socket.getInputStream(), 2048);

int read;
while ((read = is.read(bufferData, 0, 2048)) != -1) {
//If header too long - what to do? Break and close connection or just break and send response?
}

如果我突然停止接收数据(当客户端仍在传输时) - 然后开始将一些日期写入 OutputStream - 会发生什么?

最佳答案

您应该发回一个 HTTP 错误。我建议使用状态代码 400:错误请求或状态代码 431(下面的 Julian 指出了这一点)。您可以在循环中使用整数来跟踪并确保没有超出限制。

为了解决这个问题,我会停止读取数据。您通常希望将所有流关闭在一起,因此我会抛出一个异常来跳出循环,并在 catch block 中发回错误代码。在finally block 中处理关闭连接。

关于java - HTTP服务器: what to do if header received is too long? 如何管理流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308529/

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