django - 限制访问 Django/Nginx 中的静态文件

标签 django security nginx

我正在构建一个允许用户生成文档然后下载它们的系统。这些文档是 PDF(对于这个问题并不重要),当它们生成时,我将它们存储在我的本地文件系统中,Web 服务器正在使用 uuid 文件名运行该文件系统

c7d43358-7532-4812-b828-b10b26694f0f.pdf

但我知道“默默无闻的安全”不是正确的解决方案......

如果可能,我想限制每个帐户对他们文件的访问。我认为我可以做的一件事是将它们上传到 S3 并提供一个签名的 URL,但如果可能的话,我现在想避免这种情况。

我正在使用 Nginx/Django/Gunicorn/EC2/S3

还有哪些解决方案?

最佳答案

执行怎么样user==owner在 View 级别,阻止对文件的访问,将它们存储为 FileFields,并且仅在满足该条件时才检索文件。

例如您可以使用 @login_required decorator仅在登录时才允许访问。这可以使用 request.user 细化。以检查文件的所有者。 Django documentation 的用户身份验证部分在这里可能会有所帮助。

正如您提到的,另一个选项是通过 S3 本身,在 Django 中生成 url,其中有一个查询字符串,允许经过身份验证的用户访问下载特定 s3 对象的时间限制。有关详细信息,请访问 s3 documentation .之前也有人问过类似的问题here在 SO 上。

关于django - 限制访问 Django/Nginx 中的静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810610/

相关文章:

php - CSRF保护问题

NGINX:当 proxy_pass 失败时提供静态文件

django - Digital Ocean上的Docker中的Django-Anymail的“Mailgun Magnificent API”错误

Java从受限层调用方法

python - 如何在 Python 中转义撇号等?

java - j_security_check 和 JAAS

apache - Angular2 + Nginx 深度链接/路由问题

ruby - 如何使用 Bundler 在 nginx 下为 Phusion Passenger 定义 PATH?

python - Django REST 框架 : Flatten nested JSON to many objects

python - Django uwsgi 和开发服务器不一致