0

我正在制作一个脚本,该脚本将显示原始照片的小缩略图。如果用户为此图像付费,我们将生成一个链接供该用户随时下载。

问题是保存原始照片的最佳位置在哪里?另外,我如何确保用户无法从商店访问其他原始照片?

我的想法是将原始照片放在一个文件夹中,我们称之为orgImages/。当用户付费时,下载链接会是这样的。

http://www.mysite.com?download.php&token=sha1(UserLoggedInID)&pic=7726

download.php我会写一个微笑的代码

<?php
    $user_logged_in_id = $_SESSION['current_user'];
    $expected_token = sh1($user_logged_in_id);

    if($_GET['token'] == $expected_token && isset($_GET['pic'])){
        // get the picture original link 
        // generate .zip file that contains the image. 
        // let the user download the .zip file. 
    }
?>

我不知道这是否是正确的方法。如果有人给出正确的方法或提示如何完成此过程,我会感觉更好。

4

2 回答 2

0

是的,您的方法是正确的,您只需确保在向用户提供任何内容之前验证 $_GET["pic"] 参数。

如果这样做不正确,您可能会在您的软件和服务器上打开一个巨大的安全漏洞。

于 2013-07-04T01:26:40.293 回答
0

如果您添加一些密钥和图片ID,它会很好用,例如:

$token = sha1('somesecretkey|' . $user_id . '|' . $picture_id);

在这种情况下,伪造它有点复杂。

如果您需要,也可以很容易地在此方案中添加到期日期:

$token = sha1('somesecretkey|' . $user_id . '|' . $picture_id . '|' . $expire);

并将expire时间戳作为参数传递。然后在您检查令牌是否正确后在脚本中 - 检查它尚未过期。

此外,如果您更改您的密钥 - 您可以一次使所有链接失效。

于 2013-07-04T01:26:49.247 回答