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 に答える