2011-01-28 3 views
0

Я зашел в тупик с помощью этого кода, над которым я работаю. У меня есть веб-сайт, где пользователи могут зарегистрироваться и смогут просматривать определенные pdf-файлы при их входе в систему. Мой вопрос заключается в том, как я могу скрыть этот файл, чтобы убедиться, что могут подписаться только те, кто в данный момент входит в систему. Я отслеживаю своих пользователей с базой данных MySQL и использую PHP для всего кодирования на стороне сервера. В идеале, решение не будет включать пользователя, который должен снова войти в систему или что-то в этом роде. Я не обязательно ищу код (хотя его всегда оценили: D), но любой удар в правильном направлении был бы замечательным.Спрятать PDF для незарегистрированных пользователей

Спасибо за любую помощь, которую вы, ребята, можете предложить.

+1

Как вы управляете сессиями? Я предполагаю, что ответ потребует этого контекста. – sdleihssirhc

+2

Почему пользователи должны войти под своим логином? Нужно ли платить за PDF-файлы? Если нет, то это просто наказание. –

ответ

4
if(isset($_COOKIE['login'])) 
{ 
    header('Content-Type', 'application/pdf'); 
    readfile('secret/books.pdf'); 
    exit(); 
} 
else 
{ 
    include('login.php'); 
} 
+0

@phihag: спасибо .. – ayush

+0

Отлично, спасибо. Это то, что мне нужно. А также спасибо Филиппу за дополнительную помощь. – gdawgrancid

2

Единственный способ защитить URL-адрес пользователя - это потребовать входа в систему, чего вы не хотите делать. (Очевидно, что до тех пор, пока сессия открыта через файл cookie или все, что вы используете, человек может получить к нему доступ.)

Но имейте в виду, что как только человек как ссылка на PDF, они могут загрузить его и дать это кому-то другому. Поэтому, на мой взгляд, вы должны просто сосредоточиться на том, чтобы не дать среднему человеку угадать URL.

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

При этом, если вы хотите немного заблокировать его, вы можете дать каждому пользователю свой уникальный URL-адрес для PDF. Таким образом, если кто-то копирует URL-адрес, вы знаете, кто это сделал. Кроме того, через определенные промежутки времени вы можете пропустить URL-адреса.

Этот URL-адрес может быть сохранен в базе данных в виде URL-адреса. Для доступа к ней не требуется аутентификация.

+0

Хотя может быть правдой, что кто-то может поделиться PDF-файлом после получения доступа к нему, то же самое верно для всего, что вы предоставляете для частного доступа. Я думаю, было бы лучше на самом деле защитить его, как полагают @ayush и @Philipp K. Jaquet. – mfonda

+0

@mfonda, мне это зависит от приложения. Если требуемая аутентификация является бременем для пользователей, и документы не являются частными по своему характеру, я бы не стал беспокоиться о псевдобезопасной аутентификации. Вместо этого я бы придерживался уникального URL-адреса для каждого пользователя, который мог бы легко отслеживаться для подозрительной активности. Но если документы были частными/персональными или пользователи, как правило, были «обычными» посетителями, мне потребовалась бы аутентификация. – Matthew

2

Две мыслей о том, что: 1) хранить PDF вне общедоступной читаемой папки WWW и включить его на проверку подлинности пользователя, как Ayush предложил 2) защитить файл с именем пользователя и паролем, используя HTAccess и доступ это с curl. cURL может предоставить правильные учетные данные без повторного аутентификации пользователя.

Смежные вопросы