Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > ограничить доступ к некоторым ресурсам приложения


Автор: 4epT 22.2.2012, 11:44
Всем привет. Имеется приложение, в котором есть множество директорий такого типа:

Код

domen/album_name1/
domen/album_name2/
domen/album_name3/
...


В каждом из альбомов есть N картинок или других документов.

Допустим я хочу ограничить доступ к  album_name1 (например что туда имел доступ только владелец). Но ведь чисто теоретически, если я подберу (угадаю) название альбома, то я смогу вытащить от туда все картинки и прочее ... например тупо вбив в адрессной строке что то вроде:

Код

domen/album_name1/1.jpg


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

Использую Servlet и JSP, в дальнейшем может быть перепишу на JSF + EJB 3.0

Автор: Telperion 22.2.2012, 23:19
Ну как то так и надо делать... фильтр должен смотреть на адрес в реквесте и решать можно или дальше обрабатывать реквест.

хотя я бы наверно вообще запретил прямое хождение по папкам... и вместо этого передавал координаты фотки или чего там, как параметры реквеста

Автор: 4epT 23.2.2012, 11:25
Цитата

хотя я бы наверно вообще запретил прямое хождение по папкам... и вместо этого передавал координаты фотки или чего там, как параметры реквеста 


Можно поподробнее ?

Я буду отдавать ресурсы к разным сайтам/приложениям. У меня запрашивают типа "Дай мне такие то ресурсы с такими то ограничениями" и я отдаю... Логичнее отдавать прямые ссылки на ресурсы

Автор: Molodec 12.3.2012, 19:16
В моем приложении для ограничения доступа к ресурсам использую properties файл. 
В котором - имя экшена(страницы) и право которое должно быть у пользователя. 
Допустим:
manage-user=permission-admin
В каждом экшене сверяю это право. 
Говоря о материале. Допустим, чтобы только владелец мог просмотреть:
If (Текущий пользователь.hasPermission(Право администратора) || Текущий пользователь .equals(Альбом.getАвтор)){
return "Страничка альбома";
}else{
return "Какого лешего с ссылками балуешься???"
}
Ну как бы подобие алгоритма... 

Автор: carper 14.3.2012, 10:11
Цитата(4epT @  22.2.2012,  11:44 Найти цитируемый пост)
Как можно контролировать доступ ко всем директориям ? 


Вообще не давать доступа к директориям с картинками напрямую никому, так будут развязаны руки с их произвольным перемещением (как из директории в директорию, так и, например, вообще в BLOB), переименованием, изменением формата,
и можно запретить выкачивание папок целиком.

Вместо этого в HttpServletResponse писать картинку в его ServletOutputStream.
Там же, в сервлете, и права можно проверять и таймауты всякие против роботов выставлять и ресайзить картинки
динамически под разрешение дислея пользователя и т.п.

К сожалению свой код никак не могу сейчас найти :(
Помню только, что надо было не забыть, через setContentType, установить тип наподобие "image/jpeg"
и что-то там с промежуточным flush() вроде как для больших картинок было (из "улучшизмов"), но уже не помню.
Ах, да, там еще был нужен JPEGImageEncoder (сейчас нашел какой-то обрывок в Google) - т.е. изображение надо
передавать в поток в кодированном виде. Увы, не помню точно, что и как, но все работало вполне нормально и особых
подводных камней не было.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)