保护远程服务器上的下载

use*_*650 5 php wordpress

我有2台服务器.在服务器1上我有一个WordPress网站.在服务器2上,我有大量的.zip文件,我希望WordPress网站的成员能够下载.

如何对这些用户进行身份验证,以便只有作为网站成员的人才能从第二台服务器下载文件?

是否可以使用PHP,以便只有来自我的域的引用才能访问这些文件?

注意:下载文件的链接在wordpress站点上受到保护,以便将未登录的用户重定向到连接页面.但是,当前和前成员仍然知道下载的目录,并且可能下载文件或共享链接.

Pat*_*rio 6

有几种方法可以做到这一点.最安全的方法是在服务器1和服务器2之间进行一些后端通信.但这是一个简单的替代方案:

服务器2:download.php

<?PHP
 $file = $_GET['f'];
 $code = $_GET['c']; 
 $ip = $_SERVER['REMOTE_ADDR'];

 if ($code != md5($ip . 'salt')) {
    die('authentication denied');
 }

 if(!file)
 {
     die('file not found');
 }

 // Set headers
 header("Cache-Control: public");
 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=$file");
 header("Content-Type: application/zip");
 header("Content-Transfer-Encoding: binary");

 // Read the file from disk
 readfile('/files/downloads/' . $file);

?>
Run Code Online (Sandbox Code Playgroud)

服务器1:下载链接

<?PHP
 echo '<a href="http://server2.com/download.php?f=text.txt&c=' . md5($_SERVER['REMOTE_ADDR'] . 'salt') / '">Download File</a>';
?>
Run Code Online (Sandbox Code Playgroud)

该系统的工作原理是创建一个只能在其生成的IP上使用的链接.因此注册用户无法在其他地方共享链接.它不是最安全的东西,但它很容易实现并且可以工作.