Каков наилучший способ защитить каталог цифровых товаров, чтобы к нему можно было получить доступ только с помощью PHP-скрипта?


Мой сайт взаимодействует с API цифровых товаров PayPal, который по завершении перенаправляет обратно на мой PHP-скрипт, который затем разрешает загрузку.

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

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

chmod('/digital/goods/directory/file', 0777);
readfile(file);
chmod('/digital/goods/directory/file', 0000);

Я уверен, что это не может быть правильным способом сделать это. Можете ли вы использовать htaccess без необходимости ввода пользователем имени пользователя и пароля? Любые указания будут оценены по достоинству.

Author: Gareth Fuller, 2011-11-27

2 answers

Убедитесь, что файлы не передаются напрямую. В Apache вы бы держали их подальше от DocumentRoot.

Тогда разрешения не должны иметь значения, так как просто нет URL-адреса, который сопоставляется с ними.

 2
Author: Matthew Flaschen, 2011-11-27 18:56:19

Храните свои цифровые товары над корневым каталогом документа, а затем обслуживайте их с помощью PHP-скрипта с уникальным хэшем для каждого покупателя

Т.е.)

Корневой каталог документа: /главная страница/пользователь/public_html/хранилище

Защищенная папка /главная/пользователь/товары

С использованием PHP: Прочитать файл() см. http://php.net/manual/en/function.readfile.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('/home/user/goods/original.pdf');
?>
 0
Author: Bill, 2011-11-27 19:07:08