Безопасная защита паролем каталога без .htaccess - PullRequest
0 голосов
/ 01 июня 2009

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

Если бы вы могли направить меня к безопасному сценарию входа в PHP, чтобы защитить паролем каталог, я был бы очень признателен. Спасибо.

Ответы [ 2 ]

1 голос
/ 01 июня 2009

Одна вещь, которую вы можете сделать, это хранить все ваши «секретные» файлы в каталоге за пределами webroot сервера. Весь доступ к этим файлам может быть перенаправлен через один PHP-скрипт внутри вашего каталога. Примерно так:

http://www.example.com/protected-directory/access.php?file=/foo/document.doc

С такой структурой каталогов:

+--+ /server_root
   |
   +--+ /web_root
   |  |
   |  +--+ /protected-directory
   |     +-- access.php
   |     +-- access-denied.html
   |
   +--+ /protected_root
      |
      +--+ /foo
         +-- document.doc

В вашем access.php вы бы сделали что-то вроде этого:

$file = $_REQUEST['file'];
if ($user->hasAccessTo($file)) {
    readfile("/server_root/protected_root/$file");
} else {
    readfile('access-denied.html');
}

Теперь вы должны быть осторожны, чтобы убедиться, что никто не прикручивает ваш file -параметр и передает что-то вроде "../../../etc/passwd". Кроме того, вы, вероятно, хотите убедиться, что отправляете правильные заголовки в приведенном выше примере, я для простоты опускаю это.

0 голосов
/ 01 июня 2009

Вы можете использовать абсолютные пути к AuthUserFile и организовать размещение этого файла в недоступном для веб-сервера месте. Я делал это много лет. Работает нормально.

...