想象一下,我的 Webspace 上有一个图像文件secretImage.png
,我希望多个用户有权访问index.php
. 这很容易做到:
// index.php
if($userIsAllowed) echo '<img src="secretImage.png" />';
问题是,理论上用户仍然可以通过直接浏览来访问图像www.myDomain.com/secretImage.png
。有什么办法可以阻止他们这样做,使图像只能在里面查看index.php
?
通过fpassthru从 php 文件中提供图像,您可以在其中检查用户是否被允许
例如,您可能有一个 php 文件 getimage.php,它接受像“?image=mysecretimage.png”这样的查询字符串,如果用户被允许,它就会通过它。如果您走这条路,请注意采取适当的预防措施,仅通过您的图像文件。
可以通过 HTTP 身份验证保护用户特定的 URL。网上有一些例子,完全有可能通过一些 .htaccess 摆弄来为所有现有图像定制这个方法。
您可以使用 htaccess 通过 .php 文件路由对特定文件夹的所有请求。在文件中,您可以确定用户是否可以看到该文件...如果可以,请提供正确的标题和图像。如果没有,请显示您想要的任何内容(404,占位符图像)。
HTTP 调用GET /secretImage.png
本身应该需要身份验证。例如,您可以使用基本身份验证并让用户发送Authorization: {base64 user:password}
标头。