限制对网站上图像的访问
我正在制作一个作品集网站,其中包含许多图像,其中一些图像我不想让公众看到。 我想我会通过电子邮件向某人发送用户名和密码,他们可以使用这些用户名和密码“登录”以查看我的作品。
我在网上看到了“隐藏图像”问题的各种解决方案,包括以下使用 php 的 readfile 的解决方案。 我还看到另一个使用 .htaccess。
使用php的readfile()或redirect来显示图像文件?
我对 readfile 解决方案并不着迷,因为加载图像似乎很慢,我希望能够使用 Cabel Sasser 的 FancyZoom,它需要不受限制地访问图像,(他的图书馆想要到全尺寸图像的链接),因此排除了 .htaccess。
回顾一下我正在尝试做的事情:
1)提供一个网站,让用户能够将自己验证为我想查看我的图像的人。 2) 限制随机网络用户看到这些图像。 3)使用FancyZoom放大缩略图。
我不在乎最终使用什么技术——Javascript、PHP 等——只要是最干净、最简单的。
顺便说一句,我是一名 Java 开发人员,而不是 Web 开发人员,所以我可能没有正确考虑这个问题。
I'm putting together a portfolio website which includes a number of images, some of which I don't want to be viewable by the general public. I imagine that I'll email someone a user name and password, with which they can "log-in" to view my work.
I've seen various solutions to the "hide-an-image" problem on line including the following, which uses php's readfile. I've also seen another that uses .htaccess.
Use php's readfile() or redirect to display a image file?
I'm not crazy about the readfile solution, as it seems slow to load the images, and I'd like to be able to use Cabel Sasser's FancyZoom, which needs unfettered access to the image, (his library wants a link to the full sized image), so that rules out .htaccess.
To recap what I'm trying to do:
1) Provide a site where I give users the ability to authenticate themselves as someone I'd like looking at my images.
2) Restrict random web users from being able see those images.
3) Use FancyZoom to blow up thumbnails.
I don't care what technology this ends up using -- Javascript, PHP, etc. -- whatever's cleanest and easiest.
By the way, I'm a Java Developer, not a web developer, so I'm probably not thinking about the problem correctly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
而不是提供图像的链接。 提供指向 cgi 脚本的链接,该脚本将自动提供正确的图像标题和内容。
例如:
image.php?sample.jpg
然后您可以确保它们已经作为链接的一部分经过身份验证(例如传递会话 ID)。
这将是标题的一部分,然后是您的图像数据。
编辑:如果它必须很快,你可以用 C/C++ 而不是 php 编写。
Instead of providing a link to an image. Provide a link to a cgi script which will automatically provide the proper header and content of the image.
For example:
image.php?sample.jpg
You can then make sure they are already authenticated (e.g. pass a session id) as part of the link.
This would be part of the header, and then your image data can follow.
Edit: If it has to be fast, you can write this in C/C++ instead of php.
使用 .htaccess 应该是最安全/最简单的方法,因为它是内置于网络服务器本身的功能中的。
Using .htaccess should be the safest/simplest method, as it's built in functionality of the webserver itself.
我不知道它是否适合您的需求,但我通过使用TinyWebGallery,这是一个没有数据库的小型图库应用程序。
您可以通过密码允许访问不同的目录,并且可以将图片直接上传到文件系统中,因为 TinyWebGallery 将动态检查新的目录/图片。 它将生成缩略图并让用户可以对图片进行评分/评论(您可以禁用此功能)。
这不是最小的工具,但我认为它比使用 apache 指令更容易设置,而且它看起来像裸图。
I do not know if it fits your needs, but I solved a similar poblem(giving pictures to a restricted group of people) by using TinyWebGallery, which is a small gallery application without database.
You can allow access to different directories via password and you can upload pictures directly into the filesystem, as TinyWebGallery will check for new dirs/pics on the fly. It will generate thumbnails and gives users possibility to rate / comment pictures (You can disable this).
This is not the smallest tool, however I thik it is far easier to setup than using apache directives and it looks better as naked images.
如果您使用 Nginx,则可以使用 安全链接模块。
If you're using Nginx, you could use the Secure Link module.