【问题标题】:Setting up simple SAFE http server in Python3在 Python3 中设置简单的 SAFE http 服务器
【发布时间】:2019-01-11 09:14:09
【问题描述】:

我想设置一个非常简单的 http 服务器,它替换单个 html 文件中的几个关键字,并将其发送到响应请求给客户端。 Python 的 http.server 对我来说看起来不错,但在我发现的文档中:

警告 http.server 不建议用于生产。它只实现基本的安全检查。

在源代码中:

安全警告:除非您在防火墙内,否则请勿使用此代码 -- 它可以执行任意 Python 代码或外部程序。

你知道有什么方法可以创建安全的 http 服务器,哪些端口可以通过防火墙连接到互联网?

【问题讨论】:

  • 我应该注意到SECURITY WARNING 仅适用于CGI 请求处理程序。

标签: python python-3.x security httpserver


【解决方案1】:

如果它是一个 Python Web 应用程序,那么 Python 中有几个可用于 HTTP 服务器的选项。其中安全的是 Gunicorn、Nginx WSGI、mod_wsgi。列表可用here。我将以 mod_wsgi 为例。 official documentation 声明有两种方法可以安装此软件包,并且对于生产部署都是安全的:

可以根据您的要求以两种不同的方式安装该软件包。第一种是作为传统 Apache 模块安装到现有 Apache 安装中。安装 mod_wsgi 的第二种方法是使用 Python pip 命令从 PyPi 安装它。这会构建 mod_wsgi 并将其安装到您的 Python 安装或虚拟环境中。两种安装类型都适用于生产部署。

根据文档,最好的选择是使用:Apache + mod_wsgi + docker。

对于 mod_wsgi,您需要配置 Apache 2.4 并且支持 Python 2 和 3。要求在here 中注明。

Apache Web 服务器广泛用于生产应用程序。 Apache HTTP Server 项目是最古老且维护良好的 20 年之一。你可以阅读更多关于它的信息here。至于实现安全,你应该阅读this answer

【讨论】:

  • 那么在内网中使用http.server会安全吗?
猜你喜欢
  • 1970-01-01
  • 2016-03-19
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
相关资源
最近更新 更多