这可能是一个愚蠢的问题而且有一个明显的答案,但我正在测试我的404和500错误处理程序,这意味着我必须将调试切换为False。我去了Django管理页面,注意到没有提供静态文件。
据我所知,他们应该通过Apache路由,因为通过Django服务静态文件是不安全的。但是,我不太明白为什么直接通过Django提供静态文件会带来安全风险?
答案 0 :(得分:12)
以下是Django 1.8文档中关于此主题的内容:
--insecure
即使
--insecure
设置为DEBUG
,也可使用False
选项强制使用staticfiles应用程序提供静态文件。通过使用它,你承认它非常低效并且可能不安全。这仅适用于本地开发,绝不应在生产中使用,仅在staticfiles
应用程序位于项目的INSTALLED_APPS
设置中时才可用。
正如你所看到的,他们说“非常低效”和“可能不安全”。他们没有说“绝对不安全”或“不安全”。我认为他们所暗示的是他们没有对staticfiles
应用程序及其与Django其余部分的交互进行彻底的安全性分析。
对我来说,“非常低效”的部分应该足以阻止你提供静态内容。这很容易做到......从collectstatic
命令开始。
更多搜索引导我查看此Google网上论坛帖子,以回应有人询问为什么--insecure
不安全。
来自:Malcolm Tredinnick
除非经过设计和审核,否则不能认为是安全的 安全。我们既没有使用静态文件服务器也没有。它可能不会 有现有的安全漏洞,但不应该被认为是安全的 因为那不是设计目标。
例如,安全文件服务器需要检查资源 分配问题,以便服务非常大的文件不构成 拒绝服务攻击。这需要大量额外的代码和 管道管理,这是不值得投入的东西 用于发展目的。
此致
马尔科姆
...支持我的解释。 (但我不同意他将安全性和漏洞与DoS攻击混为一谈的方式。)