Могу ли я указать имя пользователя и пароль для доступа к файлу по HTTP? - PullRequest
2 голосов
/ 22 февраля 2011

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

Мне известно, что существуют базовые методы HTTP-аутентификации, которые можно использовать для передачи имени пользователя и пароля, но я слышал, что они не очень безопасны, поэтому я подумал, есть ли другие методы, которые вы могли бы порекомендовать?

Любые имена пользователей или пароли, передаваемые по нажатым ссылкам, будут передаваться по HTTPS.

1 Ответ

1 голос
/ 22 февраля 2011

Вы можете использовать язык на стороне сервера и таким образом сохранять доступ к информации / управлению.Вам не нужно использовать .htaccess с этим направлением.

Говоря о безопасности, на мой взгляд, это лучший метод, потому что вы проверяете все на бэкэнде.

Обновленный код:

<?php

# Wrap this in your credentials -- #

$directory_path = $_SERVER['DOCUMENT_ROOT'] . "/directory/path/here/";
$file_path = $directory_path . $_GET['downloadfile'];

if ($file_exists = fopen ($file_path, "r")) 
{
    $file_size = filesize($file_path);
    $file_parts = pathinfo($file_path);
    $file_extenion = strtolower($file_parts["extension"]);

    header("Content-type: application/octet-stream");
    header("Content-Disposition: filename=\"".$file_parts["basename"]."\"");
    header("Content-length: $file_size");
    header("Cache-control: private"); //use this to open files directly

    while(!feof($file_exists)) 
    {
        $buffer = fread($file_exists, 2048);
        echo $buffer;
    }
}
fclose ($file_exists);
exit;

# -- End credential wrap -- #
?>

Затем вы можете вызвать файл с помощью download.php?downloadfile=something.jpg

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

Дайте мне знать, если у вас есть вопросы.

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