php - 限制访问我网站上的图像,除非通过我自己的 html

标签 php python linux perl

在我的网站上,我以简单的方式存储用户图片,例如: “图片/user_1.jpg”。

我不希望访问者仅通过尝试 user_ids 就能够查看我服务器上的图像。 (例如:www.mydomain.com/images/user_2.jpg、www.mydomain.com/images/user_3.jpg,等等...)

到目前为止,我想到了三个解决方案:

  1. 我尝试使用 .htaccess 密码保护“图像”文件夹。这在某种程度上帮助了我,但一些图像开始在我的 html 上弹出用户名和密码请求(令人惊讶的是,有些图像没有)所以这似乎是一种不可预测的方法。

  2. 我可以开始使用一些盐将我的 user_id 转换为 md5 散列。这些图像将被命名为:/image/user_e4d909c290d0fb1ca068ffaddf22cbd0.jpg。我不喜欢这个解决方案。它使文件系统变得复杂。

  3. 或者我可以使用 PHP 的 readfile() 函数或 Perl 或 Python 中的类似函数。例如,我可以使用 md5 字符串传递密码,以将访问者验证为有权访问该图像的登录用户。

我倾向于选项 3,但从 Perl 或 Python 的角度来看(假设它们比 PHP 更快)。但是,我希望看到关于此事的其他想法。也许这有一个简单的 .htaccess 技巧?

基本上,我只想确保没有人可以查看我网站上的图片,除非这些图片是直接从我网站上托管的 html 中调用的。

非常感谢,

哈鲁克

最佳答案

您选择的任何确定请求来源的方法仅与用户浏览器发送的 HTTP_REFERER 信息一样可靠,这不是很可靠。要求身份验证是保护内容的唯一好方法。

关于php - 限制访问我网站上的图像,除非通过我自己的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1623311/

相关文章:

php - 从页面完全隐藏表单仍然会影响提交时的搜索

linux - 该错误的解决方案是什么?重击 : syntax error near unexpected token `newline'

linux - 如果以root身份安装的程序由非root用户运行,它仍然具有root权限吗?

php - MySQL 包含来自另一个表的重复值

PHP - 读取8位整数

php - php 如何从一个数据库的两个不同表中获取多个数据

python - 检查两个数字是否可以相同的算法

python - 从另一个 Ansible 模块调用一个 Ansible 模块?

python - 无法从 igraph-python 中的 EdgeList 文件导入无向图

linux - 链接汇编子例程未按预期工作