[英]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.