使用Django 1.11、apache2和mod_wsgi时的安全性

使用Django 1.11、apache2和mod_wsgi时的安全性,django,security,apache2,mod-wsgi,Django,Security,Apache2,Mod Wsgi,我读了一些有趣的东西,也看了一些,但恐怕我还有一些东西需要帮助理解。我是一个新的涉猎者 1) 博客中列出的示例很有意义,我试图实现它,但不幸的是,我的django项目位于主文件夹中,完整的wsgi路径是/home/serverio/server.io_Tools/server.io/mysite/mysite/wsgi.py。由于www date需要读取和执行权限才能打开指向最后一个mysite目录的文件夹,因此我尝试创建一个新组,该组对静态和媒体文件夹具有rwx权限。这对于static和med

我读了一些有趣的东西,也看了一些,但恐怕我还有一些东西需要帮助理解。我是一个新的涉猎者

1) 博客中列出的示例很有意义,我试图实现它,但不幸的是,我的django项目位于主文件夹中,完整的wsgi路径是/home/serverio/server.io_Tools/server.io/mysite/mysite/wsgi.py。由于www date需要读取和执行权限才能打开指向最后一个mysite目录的文件夹,因此我尝试创建一个新组,该组对静态和媒体文件夹具有rwx权限。这对于static和media文件夹是可以的,因为我使用django collectstatic将这些文件移动到/var/www文件夹中,该文件夹也将www数据所属的组作为它的组。博客上没有太多关于我的情况;我的主文件夹中有wsgi.py,如上所示。因此,我试图使主文件夹的组与www数据所属的组相同(递归),但最终结果是,我无法从ubuntu的(GUI)界面打开文件夹,即使我也将我的用户名放入www数据所使用的相同组中,并且我确认在执行ls-l时我也是目录的所有者。因此,我放弃了这种方法,将www数据放在我的userid(用于构建服务器的用户名)所属的同一组中,并将chmod 770递归地应用于主文件夹。有了这个改变,apache能够打开我的django应用程序,但我真的认为我可能造成了一个安全问题

2) 在视频链接中,Graham Dumpleton建议对wsgi路径应用0+rx的chmod,在我的例子中是(/home/serverio/server.io\u Tools/server.io/mysite/mysite/)。我怀疑这意味着任何Web用户现在都能够读取计算机上的文件,因为Gramham还说人们应该考虑将Django项目移到无家的位置。在这个论坛中,我看到人们将他们的项目移动到/var/ww,我看到人们评论说这是一种风险。Gramham还谈到仅将wsgi文件移动到新位置,但在解释过程中我迷失了方向

我想我的问题是: a) 当用户浏览网站时,他们使用的权限是什么;是www数据还是其他(o)?当我们说o+rx时,我们是不是通过这个命令给这些web用户这个权限?。这是否足以让他们阅读原始python代码

b) 考虑到我目前的情况,对我来说,最简单有效的方法是什么


谢谢论坛

最好的方法就是不要把它放在主目录下。或者,将
wsgi.py
置于主目录之外的
/var/www
目录下。然后确保使用mod_wsgi的守护程序模式,并将
WSGIDaemonProcess
user/group
选项设置为主目录的所有者/组的选项。不要在Apache用户的主目录中乱搞任何东西。谢谢。我将尝试使用Graham,使用您的指南,我设法使其工作,并且www数据对我的主文件夹路径没有任何权限。我按照建议在mod_wsgi脚本中使用了用户变量。所以ubuntu基本上不需要密码。。它只是以那个用户名运行?此外,当用户访问we页面以“其他”身份访问时,他们使用的是什么用户?如果我希望用户能够上传照片怎么办。我应该尝试使用哪种类型的安全权限?因为您已为您的用户设置了
user
选项,所以应用程序的任何代码都可以按您的方式运行。因此,上载只能转到您具有写访问权限的目录。让东西按您自己的方式运行也不太好,这就是为什么您不应该将代码放在主目录下。将代码放在
/var/www
的子目录下,然后以Apache用户的身份运行。谢谢Graham,我将wsgi.py文件移到了/var/www中的一个文件夹中。你是说我也应该将整个Django项目移出主目录吗?到目前为止,我在/var/www中有静态文件夹和媒体文件夹。我在/var/www中也有wsgi.py文件。如果我将整个代码移动到/var/www,我不是这样公开代码吗?我以前从来没有做过,所以我得弄清楚怎么做。如果我必须移动整个代码或仅移动wsgi,我的