【问题标题】:Protect image directory保护镜像目录
【发布时间】:2014-02-25 12:26:47
【问题描述】:

我正在寻找一些解决方案,它可以使我的目录中的图片得到保护。 在我的页面中,只有管理员有权上传图片。用户只有机会查看产品图片。我想让目录更安全。我想让从某种脚本下载所有图片变得困难。

现在我尝试使用 .htpaccess 和 .htpasswd 它工作正常,但是当用户尝试查看产品页面(安全文件夹中的可用图片在哪里)时,htpaccess 需要用户名和密码。

当用户观看产品页面时,是否可以从服务器端输入用户名和密码到该目录。如果他在新窗口中打开图片的链接,那么需要用户名和密码吗?

您知道其他一些解决方案吗?

干杯

【问题讨论】:

    标签: symfony


    【解决方案1】:

    不要将图像存储在每个人都可以访问的网络文件夹中。相反,将它们存储在 web 路径之外(例如在 app/data 等)并使用 symfony 控制器来传递它们。这样你就可以使用 symfony 安全组件了。

    【讨论】:

    • 问题是,如果我将它们存储在应用程序/数据中,那么我无法在产品预览中看到它们:( 当我单击 - 在新选项卡中打开图像时,我看到“禁止访问!”。任何知道如何解决这个问题吗?在应用程序目录中,我有 .httaccess,里面是“全部拒绝”
    • 所以您希望您的图片通过产品预览向公众开放,但不向公众开放?对我来说似乎有点矛盾。至于答案,@Pierre 是对的,你应该使用控制器和 Symfony2 访问控制来设置访问规则。
    • 当您将图像存储在网络文件夹之外时,网络服务器无法再直接访问它们。相反,Symfony 从那里读取它们(因为它不受那些访问限制的约束)并将内容交付给用户。添加包含文件名作为参数的路由,并通过 readfile() 传递图像的内容。你可以在这里找到更多信息:stackoverflow.com/questions/4286677/…
    • 我提供了几乎相同的答案to this question :)
    • 感谢您提供所有这些信息 :) 这将很有用。顺便说一句,我在 .htaccess 中添加 Order allow,deny Allow from all 现在我可以预览图像了。不幸的是,管理员无法在此目录中上传新文件。我现在看看这个:symfony.com/doc/current/components/http_foundation/…
    【解决方案2】:

    除了@Pierre 的好回答,您还可以使用文件系统抽象层。我建议使用Gaufrette。要将其与 Symfony 集成,您可以使用 KnpGaufretteBundle

    它会给你更多的灵活性

    • 使用外部文件系统(例如 Amazon S3、FTP、sFTP)
    • 使用 Symfony 安全组件或 ACL。

    一切都取决于您的需求和您在项目中的方法。但是,如果您需要一些灵活性,我建议您尝试一下。

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2011-11-26
      • 2014-02-15
      • 2010-11-04
      相关资源
      最近更新 更多