9

我正在使用tornado制作图像处理 RESTful 服务,该服务接受通过通用 HTTP 方式上传的图像,例如multipart/form-data. 然后我在处理程序中使用self.request.files.

攻击者可能会尝试上传一个巨大的文件来破坏服务。有没有办法告诉 tornado 上传的文件大小限制,超过应该丢弃哪个文件并设置错误 HTTP 状态?

4

3 回答 3

11

这个我试过了,有效!max_buffer_size默认值为 100 M。

import tornado.httpserver

app = tornado.web.Application([
    (r'/upload/', UploadFileHandler),
])

server = tornado.httpserver.HTTPServer(app, max_buffer_size=10485760000)  # 10G
server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
于 2016-04-21T01:25:40.250 回答
4

您可以在创建服务器时传递一个 max_buffer_size 参数。例如允许 160MB 上传”

HTTPServer(app, max_buffer_size=167772160)
于 2016-03-01T20:07:52.333 回答
2

您必须在 Web 服务器上进行配置。例如,使用 nginx:

client_max_body_size 50M;

编辑: HttpServer 使用的流具有 max_buffer_size 属性。HttpServer 将不接受比这更大的上传。它的默认值为 100MB。在我看来,当达到此限制时,HttpServer 只是关闭连接而不是发送 HTTP 响应。

于 2012-10-05T12:46:29.940 回答