为什么服务静态文件不安全

Mir*_*ac7 7 security django static-files django-staticfiles

这可能是一个愚蠢的问题并且有一个明显的答案,但我正在测试我的404和500错误处理程序,这意味着我必须将调试切换为False.我去了Django管理页面,注意到没有提供静态文件.

我知道它们应该通过Apache路由,因为通过Django服务静态文件是不安全的.但是,我不太明白为什么直接通过Django提供静态文件会带来安全风险?

Ste*_*n C 14

以下是Django 1.8文档中关于此主题的内容:

--insecure

--insecure即使DEBUG设置是,也可以使用该选项强制使用staticfiles应用程序提供静态文件False.通过使用它,你承认它非常低效并且可能不安全.这仅适用于本地开发,不应在生产中使用,仅在staticfiles应用程序位于项目INSTALLED_APPS设置中时才可用.

正如你所看到的,他们说"非常低效"和"可能不安全".他们没有说"绝对不安全"或"不安全".我认为他们所暗示的是他们没有对staticfiles应用程序及其与Django其余部分的交互进行彻底的安全性分析.

对我来说,"非常低效"的部分应该足以阻止你提供静态内容.很容易做得更好......从collectstatic命令开始.


一些更多搜索引导我访问此Google网上论坛帖子,以回应有人询问为何--insecure不安全的问题.

来自:Malcolm Tredinnick

除非为安全性而设计和审核,否则不能认为是安全的.我们既没有使用静态文件服务器也没有.它可能没有现有的安全漏洞,但不应该被认为是安全的,因为这不是设计目标.

例如,安全文件服务器需要检查资源分配问题,以便为非常大的文件提供服务不会构成拒绝服务攻击.这需要大量额外的代码和流水线管理,这些都不值得用于开发目的.

问候,

马尔科姆

......这支持了我的解释.(但我不同意他将安全性和漏洞与DoS攻击混为一谈的方式.)