Защита файлов через Интернет: детальный доступ к файлам на основе авторизации - PullRequest
2 голосов
/ 21 марта 2010

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

Загрузка в мою учетную запись в публичном, частном или защищенном режиме
Загрузка в учетную запись отдела в публичном, частном или защищенном режиме
Загрузка в учетную запись организации в публичном, частном или защищенном режиме

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

Все файлы для организации хранятся в каталоге, скажем, / files / /, на файловом сервере как

files
+ - 234809
|+ img1.jpg
|+ doc1.pdf
+ - 808234
|+ doc2.pdf

Я храню путь к файлу и уровень конфиденциальности в БД.Таким образом, я могу контролировать, показывать ли пользователю ссылку на URL-адрес файла - на заданной странице.

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

Любое предложение?


Это Java-приложение.Тем не менее, есть отдельный экземпляр Glassfish, работающий в качестве файлового сервера.Поскольку приложение еще не выпущено, мы готовы принять лучшую стратегию доступа к файлам.

Пользователь, который получает доступ к файлам, может или не может войти в систему. Но мы всегда можем аутентифицировать пользователя путем перенаправления на страницу входа, если мы знаем, что файл, к которому осуществляется доступ, является частным или общим.

Спасибо
Nishant

Ответы [ 2 ]

1 голос
/ 21 марта 2010

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

В зависимости от версии IIS, которая обслуживает контент, у вас может даже не быть контроля доступа, если контент был в вашем vdir.

Типичным решением для этого типа сценария является хранение файлов в каталоге, который НЕ доступен для Интернета, и использование HttpHandler, который защищен, и потоковая передача файлов.

Есть несколько способов сделать это, самый простой из которых - HttpHandler, сопоставленный с несуществующим каталогом, скажем / downloads, и синтаксический анализ имени файла из RequestUri, установка правильного типа содержимого и запись файла в Response. 1007 *

В этом случае ваш HttpHandler защищен, что позволяет вам определять доступ.

0 голосов
/ 21 марта 2010

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

...