| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > ограничить доступ к некоторым ресурсам приложения |
| Автор: 4epT 22.2.2012, 11:44 | ||||
Всем привет. Имеется приложение, в котором есть множество директорий такого типа:
В каждом из альбомов есть N картинок или других документов. Допустим я хочу ограничить доступ к album_name1 (например что туда имел доступ только владелец). Но ведь чисто теоретически, если я подберу (угадаю) название альбома, то я смогу вытащить от туда все картинки и прочее ... например тупо вбив в адрессной строке что то вроде:
Как можно контролировать доступ ко всем директориям ? Будет ли достаточно фильтра, который будет проверять доступность данной директории для авторизованного пользователя ? Использую 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 |
Вообще не давать доступа к директориям с картинками напрямую никому, так будут развязаны руки с их произвольным перемещением (как из директории в директорию, так и, например, вообще в BLOB), переименованием, изменением формата, и можно запретить выкачивание папок целиком. Вместо этого в HttpServletResponse писать картинку в его ServletOutputStream. Там же, в сервлете, и права можно проверять и таймауты всякие против роботов выставлять и ресайзить картинки динамически под разрешение дислея пользователя и т.п. К сожалению свой код никак не могу сейчас найти :( Помню только, что надо было не забыть, через setContentType, установить тип наподобие "image/jpeg" и что-то там с промежуточным flush() вроде как для больших картинок было (из "улучшизмов"), но уже не помню. Ах, да, там еще был нужен JPEGImageEncoder (сейчас нашел какой-то обрывок в Google) - т.е. изображение надо передавать в поток в кодированном виде. Увы, не помню точно, что и как, но все работало вполне нормально и особых подводных камней не было. |