[英]Restricting access to static files in Django/Nginx
我正在构建一个系统,该系统允许用户生成文档,然后下载它们。 这些文档是PDF(对于此问题而言,并不重要),并且在生成它们时,我将它们存储在本地服务器上运行的Web服务器上的本地文件系统中,并带有uuid文件名。
c7d43358-7532-4812-b828-b10b26694f0f.pdf
但我知道“模糊不清的安全性”不是正确的解决方案...
如果可能,我想限制每个帐户对它们文件的访问。 我想我可以做的一件事是将它们上传到S3并提供一个已签名的URL,但是如果可能的话,我现在暂时避免这样做。
我正在使用Nginx / Django / Gunicorn / EC2 / S3
还有哪些其他解决方案?
如果要提供小文件,则确实可以使用Django直接提供它们,并将文件写入HttpResponse
对象。
但是,如果要提供大文件,则可能需要将该任务留给Web服务器,可以使用Nginx上的X-Accel-Redirect
标头(对于Apache和Lighttpd,则使用X-Sendfile
)使Web服务器为以下文件提供文件:您。
您可以在Nginx的文档中找到有关标头本身的更多信息,并在此处找到有关如何在Django中使用标头的 一些启发 。
通过Django视图完成文件发送后,使用Django的auth框架强制执行用户身份验证应该很简单。
我使用django-private-files取得了很大的成功,它在视图级别实施了保护,并使用了不同的后端来进行实际的文件传输。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.