Каков наилучший способ защитить каталог цифровых товаров, чтобы к нему можно было получить доступ только с помощью PHP-скрипта?
Мой сайт взаимодействует с API цифровых товаров PayPal, который по завершении перенаправляет обратно на мой PHP-скрипт, который затем разрешает загрузку.
Я хотел бы знать, как лучше всего защитить каталог, содержащий цифровые товары, который находится за пределами корневого каталога Интернета.
На данный момент я защищаю каталоги, удаляя все разрешения. При вызове сценария загрузки права доступа к каталогу, содержащему цифровой товар, изменяются, чтобы разрешить загрузку затем снова удалили. Ниже приведена сокращенная версия того, что происходит в сценарии.
chmod('/digital/goods/directory/file', 0777); readfile(file); chmod('/digital/goods/directory/file', 0000);
Я уверен, что это не может быть правильным способом сделать это. Можете ли вы использовать htaccess без необходимости ввода пользователем имени пользователя и пароля? Любые указания будут оценены по достоинству.
2 answers
Убедитесь, что файлы не передаются напрямую. В Apache вы бы держали их подальше от DocumentRoot
.
Тогда разрешения не должны иметь значения, так как просто нет URL-адреса, который сопоставляется с ними.
Храните свои цифровые товары над корневым каталогом документа, а затем обслуживайте их с помощью 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');
?>