1

我已经开发了一种服务器资源管理器作为我们 Web 应用程序的模块,它实际上工作得很好。我正在对其进行一些改进,但有一个问题我真的不知道如何解决。

资源管理器主要用于从指定文件夹和子文件夹中选择图片。由于一些学校担心在其机构之外分发图片,因此我们为他们提供了一个选项,如果他们愿意,可以使用 .htaccess(实际上是通过 Web 接口设置 .htaccess)来保护他们的图片。

当我尝试访问受 .htaccess 保护的文件夹时,系统会提示我为该文件夹中的每张图片输入密码。值得注意的是,老师们往往会在每个重大事件上做 100+ 张图片,并且喜欢把它塞进一个文件夹中,因此浏览器打开 100+ 个对话框实际上并不罕见。

我们在后端运行 Perl,所以我认为我可以在将内容传递给 jQuery 之前检查给定文件夹是否受到保护。问题是,图像也可以通过父文件夹中的 .htaccess 来保护。

在分发图片之前,是否有任何安全的方法来检查外人是否可以访问这些图片(或文件,以保持其通用性并为其他用途开放)?

编辑 - 添加 .htaccess 文件
## OLEFA AUTH START ##
AuthType Basic
AuthName "192.168.1.120/resources/images/accesstest"
AuthUserFile /home/mike/workspace/olefa//resources/images/accesstest/.htpasswd
需要有效用户
## OLEFA 身份验证结束 ##

4

2 回答 2

1

您可能想要探索的一个选项是在每个目录中存储一个非图像占位符文件并在图像之前检索它。如果您未能检索到它,则不会执行图像拉取,并将其解释为意味着该目录已针对该用户保护。这样,您只会弹出一个密码对话框,如果他们有有效的用户名和密码,浏览器将记住它以进行图像检索。

于 2009-08-28T12:15:13.160 回答
0

听起来您可能正在为有缺陷的设计或流程构建一层又一层的修复代码。

如果您从同一目录中获取每个图像的用户名密码对话框,我最初怀疑:

  1. htaccess 以某种方式配置错误。你能告诉我们你有什么吗?
  2. 用户代理未发送授权标头。查看 HTTP 请求以验证您是否看到了 Authorization 标头。还要查看响应状态。是401还是403?

如果您尝试访问不同路径的资源,您是否为每个文件夹使用不同的领域?凭据仅适用于提出挑战的领域。如果您访问另一个领域并且您必须重新开始。你是如何在你的htaccess中指定的?

其他一些可以帮助我们的事情:

  • 您使用的是哪种身份验证?基本,摘要,还有别的吗?
  • 您是否使用自定义授权处理程序?
于 2009-08-28T19:55:03.317 回答