gpt4 book ai didi

HTTP:我可以信任 'Content-Length' 请求 header 值吗

转载 作者:可可西里 更新时间:2023-11-01 15:27:42 26 4
gpt4 key购买 nike

我正在开发文件上传服务。我希望我的用户限制上传文件的总大小,即他们有上传文件的配额。所以我想在用户开始上传新文件时检查可用配额。最简单的方法是获取 POST 请求的“Content-Length” header 值,并根据剩余用户的配额检查它。但是我很担心我是否可以信任“Content-Length”值。如果坏人在“Content-Length” header 中指定了一个小值并开始上传一个大文件怎么办。

我应该在读取输入流(并将文件保存在磁盘上)时额外检查还是多余的(这种情况应该被 Web 服务器检测到)?

最佳答案

简短的回答:它是安全的

长答案:通常,服务器需要读取(最多)与 Content-Length 请求 header 中指定的字节数一样多的字节数。之后的任何字节都应该表示一个全新的请求(重用相同的连接)。

我假设通过检查接下来的几个字节是否可以解析为请求行来在服务器上验证此要求。

request-line = method SP request-target SP HTTP-version CRLF

如果你的坏人不够聪明,无法在消息正文的正确位置注入(inject)请求 header ,服务器应该(必须?)自动将整个请求链视为无效并中止文件上传。

如果您的人确实在消息正文中注入(inject)新的请求 header (又名请求走私),每个生成的请求在技术上仍然有效,您仍然可以相信 Content -Length 对每个消息体有效。你只需要注意不同类型的攻击。例如:您可能安装了一个代理来过滤传入的请求,但只能通过检查第一个请求的 header 来实现。走私的请求获得免费通行证,这是一个明显的安全漏洞。

关于HTTP:我可以信任 'Content-Length' 请求 header 值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24268848/

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