【发布时间】:2015-01-22 08:20:31
【问题描述】:
我创建了一个应用程序,其中媒体文件(由用户上传的文件,而不是 css/js)由子域上的另一台服务器静态提供,例如:media.example.com/path/to/image.jpg。如何限制对图像的访问,以便只有某些已登录并具有权限的人才能看到它们?
请注意,显示图像的页面上的权限正在工作,但我想进一步限制对图像本身的访问,因此无法共享图像 URL。
谢谢
【问题讨论】:
我创建了一个应用程序,其中媒体文件(由用户上传的文件,而不是 css/js)由子域上的另一台服务器静态提供,例如:media.example.com/path/to/image.jpg。如何限制对图像的访问,以便只有某些已登录并具有权限的人才能看到它们?
请注意,显示图像的页面上的权限正在工作,但我想进一步限制对图像本身的访问,因此无法共享图像 URL。
谢谢
【问题讨论】:
通过 Flask 而不是您的网络服务器提供您的图像,将其视为具有权限的任何其他 url。 Nginx 显然是提供静态文件的更好选择,但它不会与 Flask 集成。
【讨论】:
您似乎正在寻找一种解决方案,其中网络服务器 (nginx) 知道只有应用程序 (flask) 知道的事情:请求浏览器是否已经验证了他们的会话。
也许可以设计一些巧妙的解决方案,让应用程序留下足够的线索供 nginx 检查,但这并不常见,而且如果你问这个问题,可能太棘手了,你无法完善一个可靠的解决方案。
例如,应用程序可能会写入 htaccess 文件并通过浏览器实现auth_basic_user_file。但我不会推荐它。
或者您可以尝试security by obscurity,将静态文件放入随机创建的子目录中。例如/static/12340A9BN34/secret_img.jpg。但是,同样,这里没有真正的安全。如果你有路径:你有文件。
聪明的人可能会发布一个很好的答案,向您展示如何做到这一点,但我怀疑是否有一种方法可以让您(简单地)通过应用程序级别的知识限制网络服务器级别的访问。
【讨论】: