Каков наилучший способ защитить каталог цифровых товаров, чтобы к нему мог обращаться только скрипт PHP? - PullRequest
2 голосов
/ 27 ноября 2011

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

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

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

0 голосов
/ 27 ноября 2011

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

т.е.)

DocumentRoot: / home / user / public_html / store

Защищенная папка / home / user / goods

При использовании PHP: Readfile () см. 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');
?>
...