2012-06-21 54 views
-1

在生产中确保django应用程序实例的常见步骤是什么? 我正在使用sqlite,所以加密数据库也会很好。在生产中保护django

而且由于数据库被加密,所以应用程序代码也应该是加密的或者只编译的。简单地删除所有* py文件并保留* pyc文件是否安全?

此外,是否可以在生产服务器中禁用django shell(./manage.py shell)?一旦外壳可访问,所有的数据。

我正在使用的堆栈是:Nginx + Gunicorn + Django + SQLite,所有托管在专用防火墙的机架空间专用服务器上。

基本上,目标是,任何具有根访问权限的人都可能无法访问数据库内容。

+2

我永远不会明白为什么人们会问这个问题。谁有能力登录到你的服务器,无法登录?什么会“禁用Django shell”甚至意味着什么? –

+4

如果有人拥有root用户访问权限,游戏就结束了,你已经失去了。 –

+0

@FredLarson:托管公司没有root权限吗? Ergo,托管公司托管的每个站点都可以访问您的生产服务器。 – TheOne

回答

4

保护django是一个重要的问题,但我认为你很困惑。

首先,即使您可以让您的代码不易检查,也不会使其更安全。其次,有可能从pyc文件恢复所有评论。

最后,django shell是在命令行中与应用程序交互的一种方便。如果任何未经授权的人能够运行它,那么禁用它就没有关系 - 您的安全性已经完全被破坏了。

我强烈建议您不要使用您当前的知识状态来管理您自己的生产服务器。使用共享主机,并按照您的托管服务的安全准则。专注于应用程序的实际Web安全性方面。

还有一件事:你没有在生产中使用内置的服务器吗?

更新:你无法保护自己的根,即使你可以,他们也可以说,只是把硬盘放入另一台电脑。

+0

Marcin:请参阅我的问题编辑。 – TheOne

+0

硬盘已加密。 = P – TheOne

+0

@Ramin如果它是加密的,这样物理访问将不会帮助攻击者,那么计算机无法从中读取任何内容。如果计算机可以读取它,那么任何具有物理访问权限和root身份的人也可以获得密钥。 – Marcin