如何使文件只能从一个链接访问


How would I make a file only accessible from one link

我在亚马逊AWS帐户上有一个HTML文件,我正在一个名为Moodle的学习环境中以iFrame的形式链接到该文件。由于这些人已经付费访问了这些课程材料,我一直在试图弄清楚是否有可能使这个文件只能从moodle中的iFrame访问(即,有人无法在源代码中查找url并与未注册课程的人共享)。我知道php中一定有我可以写的东西,但我对它还很陌生。它不一定是1337防黑客的,基本上足够的安全性来阻止你的普通电脑用户。希望在这里得到一些建议!提前感谢!

其他答案很重要,应该加以考虑。不过,这里有一种方法可以满足您的要求。

PHP脚本(content_loader.PHP)

$links = array(
   0 => "http://www.example.com/link1.html",
   1 => "http://www.example.com/link2.html",
   // Add as many links as you want here...
);
if (isset($_GET['id'])) {
   $id = $_GET['id'];
   $content = file_get_contents($links[$id]);
   echo $content;
}

iFrame

<iframe src="content_loader.php?id=1"></iframe>

请注意iframe中url的格式。您可以根据需要指定任何id,并显示相应的URL。

您可以将文件存储在本地(与Moodle安装相同的服务器),检查是否设置了某个SESSION变量,并显示文件:

<?php 
if (!isset($_SESSION['user_id']) || empty($_SESSION['user_id'])) {
   die('not authorized');
}
// else, the file is displayed
?>

你甚至可以将页面上传到Moodle(或者打印成PDF并上传),但我已经有一段时间没有在Moodle中做任何事情了。

您要防止的是人们共享到材料的链接。假设你可以防止这种情况发生。是什么阻止了我订阅、获取材料并用U盘将其交给我的朋友?

隐藏链接会让人们更难分享,但我只能说是勉强如此。

可以补救链接共享的解决方案要求您对URL有更多的控制权。特别是那些不适用于所有人的URL,或者只适用于有限时间的URL。

看看你的限制,我会得出结论:不,你不能(这可能不是什么大不了的)。