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 に答える