Защита паролем списка ссылок * и * защита паролем доступа к файлам - PullRequest
2 голосов
/ 20 мая 2011

( Я знаю, что это, вероятно, простой вопрос, но я не знаю, как это сделать. Извините, если это было задано ранее. )

Что я хочу. Я хочу список ссылок на файл, которые расположены на сервере. Файлы являются документами (PDF-файлы). Я понимаю, как использовать PHP, чтобы ограничить доступ к списку ссылок, но можно просто ввести прямую ссылку на файлы в браузере и загрузить файлы. Поэтому я хочу защитить паролем файл PHP (список ссылок), и чтобы люди вводили пароль только один раз.

Что у меня есть. Пока у меня есть документы .php (найден в интернете):

<?php
$username = "name";
$password = "5f4dcc3b5aa765d61d8327deb882cf99";

if ($_POST['txtUsername'] != $username || md5($_POST['txtPassword']) != $password) {
?>
<h1>Login</h1>
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <p><label for="txtUsername">Username:</label>
    <br /><input type="text" title="Enter your Username" name="txtUsername" /></p>
    <p><label for="txtpassword">Password:</label>
    <br /><input type="password" title="Enter your password" name="txtPassword" /></p>
    <p><input type="submit" name="Submit" value="Login" /></p>
</form>
<?php
}
else {
?>
<p>Link to documents</p>
<p><a href="http://example.com/folder/file.pdf">file.pdf</a></p>
<?php
}
?>

Но при этом человек может просто получить доступ к файлу из браузера по прямой ссылке: http://example.com/folder/file.pdf.

Как мне предотвратить это?

(мне комфортно с PHP, JavaScript и базовым HTML) Спасибо, Томас

Ответы [ 2 ]

3 голосов
/ 20 мая 2011

Аналогично ответу Quasistoic - за исключением того, что используйте свой веб-сервер (например, Apache или nginx), чтобы предоставить защищенный / внутренний URL-адрес для файлов PDF (а не просто статический URL-адрес в своем веб-корне), а затем используйте X-Sendfile(или если в nginx заголовок X-Accel-Redirect) для отправки файла без необходимости потоковой передачи файла через PHP.

3 голосов
/ 20 мая 2011

Опосредовать доступ к файлам через php

Поместите документы за пределы своего webroot и сохраните именованный массив путей к ним в вашем php-файле. Когда клиент запрашивает файл по имени (после того, как вы их аутентифицировали), найдите путь к файлу в массиве и прочитайте файл из файловой системы, а затем выведите обратно его содержимое.

Это то, для чего предназначен readfile .

...