2012-12-26 6 views
0

У меня есть веб-приложение, которое позволяет пользователям хранить файлы, содержащие конфиденциальную информацию. До сих пор я написал код, чтобы, если они просматривают свои файлы, они просматривают view.php? Id = xx, и проверка выполняется через базу данных, чтобы подтвердить, что им разрешено просматривать указанный файл. В качестве примера, Джон загружает «information.pdf» к папке «загрузке», встречающаяся в «www.mysite.com/uploads», поэтому точный путь к файлу будет «HTTP: // www.mysite.com/uploads/information.pdf ", а в базе данных в этом же файле есть идентификатор, скажем, 2, чтобы он добрался до него через view.php? id = 2.Как хранить конфиденциальные файлы и разрешать доступ только определенным пользователям

Вопрос

Как я остановить любой из только собираюсь точным путем и, глядя на его чувствительный файл?

Что я сделал

Написанный код только разрешить доступ к файлам, если пользователи идут через мой сайт, а не напрямую.

Я рассмотрел рекомендованные вопросы для того же названия, однако не повезло.

Любая помощь была бы принята с благодарностью.

ответ

2

Не ставьте его на общедоступный путь, например http://www.mysite.com/uploads/. Положите его вне HTDOCS и только разрешить доступ через ваш view.php

Если вы хотите, чтобы загрузить средство владельцу просто создать download.php, который проверяет разрешение точно так же, как view.php но вместо просмотра она позволяет пользователю загружать.

+0

Я дам вам попробовать, спасибо! Должен ли я предоставить этой папке разрешение 777? – sotirios9

+0

Кроме того, как я могу получить доступ к файлу через 'view.php', если он находится за пределами общедоступного каталога? Раньше я бы пошел прямо за ним через http: // www.mysite.com/uploads/file.pdf'? Вместо этого я вам скажу, чтобы найти файл в каталоге '/ home/upload_directory', который находится за пределами каталога'/home/public_html/'? – sotirios9

+1

'/ home/upload_dir' в порядке. В 'view.php' вы получаете доступ по пути к файлу NOT http URL. И при необходимости используйте разрешение 777. Сначала попробуйте сначала. –

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