[英]Set a file as private and access only through PHP script? (Inside a server)
我的主机托管在共享主机中(我认为这无关紧要)。 我想在 php 脚本中执行一些操作,这些操作包括从文件中读取。 我希望任何人都无法访问该文件,只能通过 php 脚本访问(否则任何人都可以通过访问链接在未经许可的情况下获取该文件)。 我怎样才能做到这一点?
谢谢。
您可以通过使用以下代码添加 .htaccess 轻松禁止访问文件夹:
deny from all
然后您仍然可以使用fopen()
或file_get_contents()
通过 PHP 访问它
如https://stackoverflow.com/a/70365577/7335057中所述,您可以使用 .htaccess 文件,只要您使用的是 ZB6EFD606D118D0F620666E 或兼容的 webserver3。
拥有长的随机链接也是完全合理的。 https://example.com/usercontent/326a98f7a6c61fb3e37c310c414ca23b16948b4a/test.jpg
您需要确保无法使用蛮力找到链接,并且只能链接到当前用户被允许查看的文件。
URL 的326a98f7a6c61fb3e37c310c414ca23b16948b4a
部分对于每个用户必须是唯一的。 它不能是散列的 userId 或类似的东西。
以下是如何为您的 URL 生成高度唯一但随机字符串的示例:
$partLength = 10;
$fix = "your-app-node-1";
$time = microtime(true);
$random = random_int(1000000, 9999999);
$urlPart = substr(sha1($fix), -$partLength)."-";
$urlPart .= substr(sha1($time), -$partLength)."-";
$urlPart .= substr(sha1($random), -$partLength);
修复部分主要用于当您使用多个服务器时,因此 ids 不会发生冲突。
并非所有共享网络空间的主机都允许这样做,但如果您这样做,请将文件放在根目录上方的文件夹中,以使它们无法通过 web 请求访问。 请注意路径遍历攻击。
根目录之外的文件通常仍然可以使用 PHP 访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.