只是从.net背景看python。python是像.net一样编译的吗?如果是,它可以被混淆吗?它比被混淆的.net编译代码更安全还是更不安全?几乎所有的web主机(unix)都支持django和python吗?
mzsu5hc01#
Python语言有许多实现;对于生产使用来说,这三个确实是可靠、成熟和完整的,它们是CPython、IronPython和Jython。所有这些通常都被编译成某种形式的字节码,也称为中间代码。从源代码到字节码的编译可以在需要时进行,但是如果您愿意,也可以提前进行;但是Google App Engine,它可以让你免费运行小型Python Web应用程序,包括Django,因为它的一个限制是要求你上传源代码而不是编译代码(我不知道其他主机有同样的限制,但我知道没有一个主机会免费给你这么多资源作为交换;-).你可能最熟悉IronPython,它是微软的产品(尽管我相信它是第一个完全开源的微软产品):在这种情况下,您可以确定它是“像. net一样编译”,因为它是(一部分). net(更准确地说,. net和silverlight)。因此,它不能比. net(意思是任何其他. net语言)更模糊和/或更安全。Jython运行在JVM(Java虚拟机)上,就像IronPython运行在Microsoft的公共语言运行时(Common Language Runtime)上一样。CPython有自己的专用虚拟机。为了完整起见,其他实现(尚未推荐用于生产使用)包括pypy,这是一种高度灵活的实现,支持许多可能的后端(包括但不限于. net); unladen swallow,专注于改进CPython以使其更快; pynie,Parrot虚拟机的Python编译器; wpython,基于“字码”而不是“字节码”的重新实现;毫无疑问还有很多很多人CPython、IronPython、Jython和pypy都可以运行Django(其他实现可能也足够完整,但我不确定)。
cbeh67ev2#
我不知道安全的部分,但是。
mwyxok5s3#
您不必担心代码的模糊处理,特别是因为它将在您的服务器上运行。无论如何,你不应该把你的代码放在公共目录中。使用django(相对于PHP)的正确做法是让代码可以被Web服务器访问,而不是被公众访问。如果您的服务器的安全性已被破坏,那么你有其他的事情要担心...
b09cbbtk4#
混淆是虚假的安全。比没有安全感更糟糕的是虚假的安全感。你为什么要混淆一个Web应用程序呢?Python被编译成字节码并在虚拟机上运行,但通常作为源代码分发。除非你真的打算在“几乎所有的网络主机”上运行你的网络应用程序,否则这个问题并不重要。有很多很好的主机支持python和django。
sxissh065#
.NET中的代码混淆主要是改变变量名,使其更难理解反汇编代码。是的,你也可以用CPython来做这些技术。现在,你为什么要***完全是另一个问题。它实际上并不为您提供任何安全性,也不能防止任何人窃取您的软件。
eaf3rand6#
web服务器应用程序python代码不需要托管到公共视图,也不需要混淆。程序员可能希望使用混淆的唯一时间是面向前的API,该API以在浏览器中查看页面源的形式公开泄露私有IP/主机名或其他安全属性。如果应用程序不这样做,那么你根本不需要使用任何模糊处理。使用的例子:公共的Javascript,在XSS攻击中可能被破坏的html cgi变量等。
4xy9mtcn7#
Python是一种解释性语言。但是您可以使用Freeze将python程序编译为Unix可执行文件。
7条答案
按热度按时间mzsu5hc01#
Python语言有许多实现;对于生产使用来说,这三个确实是可靠、成熟和完整的,它们是CPython、IronPython和Jython。所有这些通常都被编译成某种形式的字节码,也称为中间代码。从源代码到字节码的编译可以在需要时进行,但是如果您愿意,也可以提前进行;但是Google App Engine,它可以让你免费运行小型Python Web应用程序,包括Django,因为它的一个限制是要求你上传源代码而不是编译代码(我不知道其他主机有同样的限制,但我知道没有一个主机会免费给你这么多资源作为交换;-).
你可能最熟悉IronPython,它是微软的产品(尽管我相信它是第一个完全开源的微软产品):在这种情况下,您可以确定它是“像. net一样编译”,因为它是(一部分). net(更准确地说,. net和silverlight)。因此,它不能比. net(意思是任何其他. net语言)更模糊和/或更安全。
Jython运行在JVM(Java虚拟机)上,就像IronPython运行在Microsoft的公共语言运行时(Common Language Runtime)上一样。CPython有自己的专用虚拟机。
为了完整起见,其他实现(尚未推荐用于生产使用)包括pypy,这是一种高度灵活的实现,支持许多可能的后端(包括但不限于. net); unladen swallow,专注于改进CPython以使其更快; pynie,Parrot虚拟机的Python编译器; wpython,基于“字码”而不是“字节码”的重新实现;毫无疑问还有很多很多人
CPython、IronPython、Jython和pypy都可以运行Django(其他实现可能也足够完整,但我不确定)。
cbeh67ev2#
我不知道安全的部分,但是。
mwyxok5s3#
您不必担心代码的模糊处理,特别是因为它将在您的服务器上运行。
无论如何,你不应该把你的代码放在公共目录中。使用django(相对于PHP)的正确做法是让代码可以被Web服务器访问,而不是被公众访问。
如果您的服务器的安全性已被破坏,那么你有其他的事情要担心...
b09cbbtk4#
混淆是虚假的安全。比没有安全感更糟糕的是虚假的安全感。你为什么要混淆一个Web应用程序呢?
Python被编译成字节码并在虚拟机上运行,但通常作为源代码分发。
除非你真的打算在“几乎所有的网络主机”上运行你的网络应用程序,否则这个问题并不重要。有很多很好的主机支持python和django。
sxissh065#
.NET中的代码混淆主要是改变变量名,使其更难理解反汇编代码。是的,你也可以用CPython来做这些技术。
现在,你为什么要***完全是另一个问题。它实际上并不为您提供任何安全性,也不能防止任何人窃取您的软件。
eaf3rand6#
web服务器应用程序python代码不需要托管到公共视图,也不需要混淆。程序员可能希望使用混淆的唯一时间是面向前的API,该API以在浏览器中查看页面源的形式公开泄露私有IP/主机名或其他安全属性。如果应用程序不这样做,那么你根本不需要使用任何模糊处理。使用的例子:公共的Javascript,在XSS攻击中可能被破坏的html cgi变量等。
4xy9mtcn7#
Python是一种解释性语言。但是您可以使用Freeze将python程序编译为Unix可执行文件。