Переименование папки для каждой загрузки - PullRequest
4 голосов
/ 24 мая 2011

РЕДАКТИРОВАТЬ: Мы разрешаем загрузку нашего продукта после отправки простой формы.

Чтобы владельцы "нелегальных веб-сайтов" не узнали, где находятся наши продукты, я думал о переименовании папки загрузки после каждой загрузки.

Как я могу сделать это на PHP?

Ответы [ 7 ]

8 голосов
/ 24 мая 2011

Вместо этого проверьте аутентифицируемый сеанс и затем загрузите поток через PHP.

Затем, если какой-либо нелегальный веб-сайт попытается загрузить ваш файл, он обнаружит, что сначала необходимо пройти проверку подлинности.

2 голосов
/ 24 мая 2011

Не переименовывать каталог.Он сломается, если несколько пользователей загрузят файл одновременно.Вместо этого подайте файл через PHP как:

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>
1 голос
/ 24 мая 2011

Хороший способ - использовать комбинацию .htaccess и key

.htaccess
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)/([a-z0-9]+/i)$ serve.php?file=$2&key=$1 [NC,L]

После того, как кто-то купит ваш файл, установите ключ и войдите в учетную запись клиента в MySQL, отправив ему ссылку для загрузки по электронной почте (http://yoursite.com/key1234567/your.pdf), отметив, что он может загрузить только один раз

человек нажимает скачать

затем с serve.php

Вы проверяете ключ в учетной записи там ip в там и отмечаете как загруженный

sql check on ip and key match


if($allowedToDownload===true){
    header('Content-type: application/pdf');

    // It will be called downloaded.pdf
    header('Content-Disposition: attachment; filename="downloaded.pdf"');

    // The PDF source is in original.pdf
    readfile('hidDen_ArEa/'.basename($_REQUEST['file']));
    }
1 голос
/ 24 мая 2011

Ничего личного, но это не самая умная идея.
Проверьте $_SERVER['HTTP_REFERER'] - если эта переменная не пуста и не содержит адреса страницы предварительной загрузки, перенаправьте пользователя на какую-либо страницу предварительной загрузки.

edit: check HTTP_REFERER - это не 100% защита от ботов, но другие методы (такие как аутентификация) могут быть более раздражающими для пользователей.

Также можно использовать сеансы или файлы cookie (с временным токеном).

1 голос
/ 24 мая 2011

Возможным решением может быть системный вызов PHP для создания временной программной ссылки на ваш установщик и удаления этой программной ссылки через фиксированный промежуток времени.

Но на самом деле, похоже, вы ошиблись в том, что касается защиты вашего установщика.

1 голос
/ 24 мая 2011

Да, - вы можете сделать это, используя переименовать функцию PHP, но что за странный подход? Вам лучше настроить параметры доступа к файлам, к которым можно получить доступ через HTTP-запрос, а какие нет. Разрешите только зарегистрированным пользователям загружать файлы и идентифицировать реальных пользователей из роботов, используя файлы cookie пользовательских сеансов, и, возможно, добавьте капчу, если эти файлы настолько важны.

0 голосов
/ 25 мая 2011

Лучшим решением на данный момент является следующее: http://www.devshed.com/c/a/PHP/Simple-and-Secure-PHP-Download-Script-with-Limits-Tutorial/.

Спасибо всем вам за то, что вы указали мне этот подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...