【问题标题】:Can Python server code be read?可以读取 Python 服务器代码吗?
【发布时间】:2016-03-12 22:49:37
【问题描述】:

我正在使用 Python WebSocket 服务器。我通过在终端中运行python server.py 命令来启动它。在此之后,服务器运行良好,实际上非常适合我使用它。服务器在 8000 端口上运行。

我的问题是,如果我将 server.py 文件保存在我的 localhost 目录或任何子目录之外,其他人可以读取 Python 文件并查看代码吗?

谢谢。

【问题讨论】:

  • 取决于目录和文件的权限。
  • @aaron_world_traveler 所以如果我有一个关闭读、写和执行的目录,那么 Python 文件是无法查看的,但仍然可以通过终端执行?
  • 没错。它仍然可以通过python server.py 执行,而不是通过在文件中放入hashbang 并执行./server.py 之类的操作。
  • 因此关闭所有这些权限有效地阻止了任何没有物理访问计算机的人查看代码,但仍然允许它由 python server.py 执行。对吗?
  • 是的,实际上。攻击者总是有可能获得对机器的 root 访问权限并远程查看代码......但那将是你最不担心的。

标签: python websocket server


【解决方案1】:

很难给出明确的是或否答案,因为您的服务器可能会以一百万种方式公开 .py 文件。关键点是,您的服务器需要主动将文件公开给外界。没有运行网络服务的计算机不会在网络上公开任何内容。只有对计算机的物理访问才能让您访问该文件。

从这一点来看,每一项提供网络组件的附加服务都会对安全性造成缓慢的侵蚀。您的 Python 服务器本身(大概)不会公开自己的源代码;它只提供它被编程提供的服务。但是,您可能在机器上运行了其他服务器,它们主动提供文件以供下载,或者可能会被欺骗这样做。这就是很难给出绝对“否”的地方,因为需要对您的机器进行全面审核才能给出明确的答案。

可以说,正确配置的服务器没有安全漏洞,用户将无法通过网络下载底层源代码。

【讨论】:

  • 正确,Python文件没有暴露任何源代码。机器上唯一的其他服务器是 Apache。假设 localhost 是 /WebServer/documents。当我输入公共 IP 地址时,公众会看到这个目录。但是,Python 文件在 /WebServer/servers 中存储和执行。希望这能更好地解释结构。
  • 如果 Apache 被正确配置为从 /WebServer/servers 提供文件,那么应该没有问题。请注意,/WebServer/documents 中的某些可执行文件(例如 PHP 文件)接受来自请求的任意路径并读取和输出您的 .py 文件(从未经验证的用户提供的路径读取文件系统内容)仍然可能存在次要问题。也可能存在第三个问题,即用户可以上传代码,执行时可以读取任意位置(后门安装漏洞)......
  • 您在该服务器上是否安装了未打补丁的 Wordpress?你可能已经被骗了……再一次,如果没有全面的审计,没有人能给你一份干净的健康单。 :)
  • 不,WordPress 没有安装,也永远不会安装。 Apache 服务器中没有一个文件可以让用户上传或执行他们自己的代码。服务器正在托管一个 REST API,供其 iOS 对应方使用。
  • 假设该 REST 服务器中没有可被利用的漏洞...在您的服务器上运行的每一行代码都是潜在的安全漏洞...:)
猜你喜欢
  • 1970-01-01
  • 2020-05-26
  • 2016-04-17
  • 2014-06-11
  • 2016-11-12
  • 2011-08-31
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
相关资源
最近更新 更多