首页 > 解决方案 > 什么比 python 中的 http.server 包更安全?

问题描述

我正在使用 python 构建一个 Http 文件服务器,所以我使用 http.server python 内置包,如下所示

from http.server import HTTPServer, BaseHTTPRequestHandler

from io import BytesIO


class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b'Hello, world!')

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        body = self.rfile.read(content_length)
        self.send_response(200)
        self.end_headers()
        response = BytesIO()
        response.write(b'This is POST request. ')
        response.write(b'Received: ')
        response.write(body)
        self.wfile.write(response.getvalue())


httpd = HTTPServer(('255.255.255.255', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()

所以我读过这个包不推荐用于生产。它只实现基本的安全检查。有什么替代方法或更好的方法吗?

标签: pythonpython-3.xhttp

解决方案


Python 库并非旨在提供高性能和高度安全的 http 服务器。它只是允许简单快速地构建一个满足您功能需求的可接受的http 服务器。如果您想在生产中使用它,只需将其隐藏在 Apache 或 nginx 反向代理后面。这样,只有安全代理才会暴露在互联网上。

这就是专业级 Tomcat 应用服务器通常做的事情。


推荐阅读