繁体   English   中英

如果我担心代码安全,我应该只在服务器上部署 .pyc 文件吗?

[英]Should I deploy only the .pyc files on server if I worry about code security?

想将Django应用部署到云计算环境,但是担心源码安全。 我可以只在那里部署已编译的 .pyc 文件吗? 根据官方的python 文档,pyc 文件“逆向工程难度适中”。

采用这种方法的利弊是什么? 这是标准做法吗?

我没有使用AWS,让我说我在一个完全不能信任云计算的国家......

部署 .pyc 文件并不总是有效。 例如,如果使用 Apache/mod_wsgi,至少 WSGI 脚本文件仍然需要是直接的 Python 代码。

某些 Web 框架还可能要求提供原始源代码文件。 使用 .pyc 文件也几乎无法掩盖 Web 框架使用的模板中可能包含的任何敏感信息。

通常,使用 .pyc 文件是一种非常薄弱的​​防御措施,并且可以使用工具对其进行逆向工程以从中提取信息。

因此,从技术上讲,您的应用程序可以运行,但不会被视为保护源代码的非常安全的方式。

您最好使用您信任的托管服务。 这通常意味着为信誉良好的主机付费,而不仅仅是您能找到的最便宜的主机。

显然你可以。 看看这个问题这篇博文

不过,我会考虑一件事……如果您不 100% 信任它,为什么要转向云提供商? 只上传 pyc 文件可能会保护您的代码(有点),但是保护您的用户呢? 如果您不信任提供商,那么最好不要使用云计算。

是的,只需部署编译的文件就可以了。 要考虑的另一点是应用程序的其他方面。 一方面可能是当前的错误是否让恶意用户知道您正在使用什么技术堆栈,当(如果)您的应用程序崩溃时显示的错误消息类型。 对我来说,这些似乎是其他一些方面,我相信还有更多。

通常,部署 PYC 文件会正常工作。

正如你所说,优点对保护源代码有点帮助。

缺点,这里是我发现的要点:

1)。 PYC 仅适用于相同的 Python 版本。 例如,"a.pyc" 是由 Python2.6 编译的,"b.pyc" 是由 2.7 编译的,而 b.pyc "import a" 是行不通的。 同样,“python2.6 b.pyc”都不起作用。 所以请记住使用相同的 Python 版本来生成所有 PYC,以及您云服务器上的版本

2)。 如果你想通过 SSH 连接到云服务器进行一些实时调试,PYC 无法帮助你

3)。 部署工作需要做额外的事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM