【问题标题】:What are some options to store images securely other than storing on database?除了存储在数据库中之外,还有哪些安全存储图像的选项?
【发布时间】:2009-11-11 09:24:47
【问题描述】:

通常文件服务器用于存储 Web 应用程序的图像。为了获得更高的安全性和控制,您可以将图像存储在数据库中。但事实证明这既复杂又缓慢。

除了 db/file server 之外,还有没有其他主流选项可以使用用户权限等安全地存储图像。

编辑:我部署在亚马逊云上并使用 postgresql 作为数据库。

【问题讨论】:

    标签: image database


    【解决方案1】:

    SQL Server 2008 提供the Filestream storage,它允许您将数据存储在文件系统中,同时通过数据库访问它。如果您对使用数据库的唯一关注是性能,它会很有用。

    【讨论】:

    • 感谢@Konamiman 目前我部署在亚马逊云上并使用 postgresql 作为数据库。
    【解决方案2】:

    如果图像存储在没有直接网络访问权限的文件夹中,您可以这样做

    <img src="getimage.aspx?id=1234">
    

    并让您的 GetImage“页面”进行任何适当的权限测试(例如使用会话 ID),然后从安全文件夹“交付”图像。

    我认为缺点是图像没有被缓存?但我希望数据库路由也是如此。

    在物理数据库中存储图像会使数据库膨胀,增加备份和恢复时间;但它提供了一个单一的容器,如果您想将所有内容移动到新的/多台服务器上,或者如果确保图像和数据库中其他数据之间的引用完整性很重要,那么它非常有用

    【讨论】:

      【解决方案3】:

      您是否担心人们猜测 URL 并直接访问图像?

      如果是这样,您仍然可以将图像放在文件系统上,就在您的 www 目录之外。您创建一个名为 ImageServer.php/.aspx/.jsp 的页面,从文件系统中抓取图像,然后响应如下 URL 提供它:

      ImageServer.php?image=BlueWhale.png
      

      如果您这样做,请注意正确设置 MIME 类型和到期标头,因为 Apache/IIS 不会为您这样做。

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 1970-01-01
        • 2014-03-08
        相关资源
        最近更新 更多