【问题标题】:How to handle static/media file permission on flask? [duplicate]如何处理烧瓶上的静态/媒体文件权限? [复制]
【发布时间】:2015-01-22 08:20:31
【问题描述】:

我创建了一个应用程序,其中媒体文件(由用户上传的文件,而不是 css/js)由子域上的另一台服务器静态提供,例如:media.example.com/path/to/image.jpg。如何限制对图像的访问,以便只有某些已登录并具有权限的人才能看到它们?

请注意,显示图像的页面上的权限正在工作,但我想进一步限制对图像本身的访问,因此无法共享图像 URL。

谢谢

【问题讨论】:

    标签: python nginx flask


    【解决方案1】:

    通过 Flask 而不是您的网络服务器提供您的图像,将其视为具有权限的任何其他 url。 Nginx 显然是提供静态文件的更好选择,但它不会与 Flask 集成。

    【讨论】:

    • 非常感谢,但我认为静态文件不应该由烧瓶在生产中提供?有什么我不知道的警告吗?
    • 你是对的,这不是最佳的,我总是通过网络服务器提供静态文件,但这不能满足你的要求。缺点是它不会像通过网络服务器提供图片那样轻松,当您的流量增加时,这一点会更加明显。
    【解决方案2】:

    您似乎正在寻找一种解决方案,其中网络服务器 (nginx) 知道只有应用程序 (flask) 知道的事情:请求浏览器是否已经验证了他们的会话。

    也许可以设计一些巧妙的解决方案,让应用程序留下足够的线索供 nginx 检查,但这并不常见,而且如果你问这个问题,可能太棘手了,你无法完善一个可靠的解决方案。

    例如,应用程序可能会写入 htaccess 文件并通过浏览器实现auth_basic_user_file。但我不会推荐它。

    或者您可以尝试security by obscurity,将静态文件放入随机创建的子目录中。例如/static/12340A9BN34/secret_img.jpg。但是,同样,这里没有真正的安全。如果你有路径:你有文件。

    聪明的人可能会发布一个很好的答案,向您展示如何做到这一点,但我怀疑是否有一种方法可以让您(简单地)通过应用程序级别的知识限制网络服务器级别的访问。

    【讨论】:

    • 感谢您的洞察力,它确实提供了丰富的信息和帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多