|
|
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Всем привет! Ситуация - заходит пользователь на сайт, сервер смотрит, какие файлы пользователь может видеть и выдает ему ссылки на эти файлы. По клику на ссылку файл скачивается. Понятно, что есть 2 способа - либо просто динамически генерировать список прямых ссылок, либо копировать в OutputStream. Второй способ не нравится, кажется каким-то неуклюжим, первый способ не нравится тем, что спалю структуру файлов. Вопросы - 1) Какой недостаток кроме необходимости вручную копировать у второго способа? Считается ли такой подход "плохой практикой" или норм? 2) Как можно делать просто ссылки, при этом не палить структуру директорий на сервере? На ум приходит только выдавать ссылку вида домен/хеш, как в гуглодрайве, а потом, соответствие хешированного УРЛ-а нормальным файлам хранить в БД. Это нормальный подход? Ну или просто хешировать каждый УРЛ с какой-нибуль солью, типа пятая буква в урле и тогда-даже записей в БД не надо. Но нормален ли такой подход... Как делают профи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 15:28 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
BaurzhanSПонятно, что есть 2 способа Есть 100500 способов со своими достоинствами и недостатками. BaurzhanS- либо просто динамически генерировать список прямых ссылок, либо копировать в OutputStream. "Прямая ссылка" это в итогде тоже самое копирование файла в сокет, только не вашим кодом, а средствами контейнера или web сервера. BaurzhanSВторой способ не нравится, кажется каким-то неуклюжим 1) Какой недостаток кроме необходимости вручную копировать у второго способа? Считается ли такой подход "плохой практикой" или норм? Куча всяких HTTP фич может быть реализована сервером. Докачки файла с определенной позиции, отправка по частям, управление кэшированием. Не зная что из этого существует и что из этого может понадобится, можно просто лишится этих фич. BaurzhanSпервый способ не нравится тем, что спалю структуру файлов Смело. Фильтры и forward, выходит, ещё не проходили? BaurzhanS2) Как можно делать просто ссылки, при этом не палить структуру директорий на сервере? На ум приходит только выдавать ссылку вида домен/хеш, как в гуглодрайве, а потом, соответствие хешированного УРЛ-а нормальным файлам хранить в БД. Это нормальный подход? Ну или просто хешировать каждый УРЛ с какой-нибуль солью, типа пятая буква в урле и тогда-даже записей в БД не надо. Но нормален ли такой подход. Можно и без БД генерить UID и хранить в глобальном контексте маппинг UID на путь. При остановке сервера UID-ы персистить через сериализацию HashMap. Переодически подчищать. Да, можно и шифровать, но если нет уверенности, что оно вообще нужно, то зачем так усложнять? Что там такая секретная структура сервера, что злоумышленники будут сканировать? Достаточно любого простейшего алгоритма, по которому некий UID можно распаковать в полное имя файла. Можно просто для всех файлов UID нагенерить заранее. Пользователи ссылками могут обмениваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 15:43 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
BaurzhanS, ftp сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 16:05 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКуча всяких HTTP фич может быть реализована сервером. Докачки файла с определенной позиции, отправка по частям, управление кэшированием. Не зная что из этого существует и что из этого может понадобится, можно просто лишится этих фич. Мне пока такие фичи не нужны, но спс за полезную инфу. Petro123ftp сервер? - нет. Насчет обмена ссылками - нет, пока такого не надо. Да я вообще не так сильно боюсь палить структуру директорий, просто думал что так не принято делать, типа кулхацкеры могут имея структуру что-то делать нехорошее. Типа дополнительная подстраховка из-за недостаточных знаний)) Если знание структуры никак не способствует атакам, то можно и не париться, а давать прямые ссылки. Я так понял, прямые ссылки - это FTP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 16:11 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Насчет FTP. Почитал отличие от НТТР, не понял техническую часть - когда я даю прямую ссылку, это же все равно браузер забирает по НТТР сокету? Как замутить ФТП чтобы само из браузера по этому протоколу работало? Если прямую ссылку давать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 16:15 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
BaurzhanSПонятно, что есть 2 способа - либо просто динамически генерировать список прямых ссылок, либо копировать в OutputStream. Второй способ не нравится, кажется каким-то неуклюжим, первый способ не нравится тем, что спалю структуру файлов. Обычно файловое хранилище лежит на отдельном хосте/домене/сервере и ты просто передаёшь на него ссылки. Ничего страшного в "палеве" структуры каталогов я не вижу. Формула по которой вычисляется имя ссылки может быть совершенно произвольной и вовсе не секретной. Порядковый номер например - самый лучший вариант IMHO. Что даёт потенциальному злоумышленнику "знание структуры" - непонятно. Игры с "хешами" и "солями" - бесозсновательны по тем-же причинам. Они кст. могут быть и источником других проблем и трудноуловимых ошибок (дубли файлов, ложные ссылки, недоступные ссылки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 17:22 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Про кулхацкеров. N лет тому назад на Хабре была статья. Вроде "Грабь награбленное" называлась. Там товарищ обнаружил, что какой-то файлообменник формирует URL с возрастающим числовым ID. Надергал файлов, подставляя ID, и нашел много интересного типа спам-баз и паролей к ящикам. За давностью могу чего и приврать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 17:37 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Alexander A. Sak, +1 Как раз от типа таких напастей и спасает FTP Например, есть галка Просмотр списка файлов (List) Кому разрешено, тот и увидит список всех. Зачем это руками писать непонятно. Кроме того, на ФТП можно поставить лимит на запись файлов на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 17:58 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Карф..., тьфу, ftp должен быть разрушен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 22:25 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, а чем он тебе так неугодил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 22:45 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovКарф..., тьфу, ftp должен быть разрушен ну тогда в эту папку их все покидать) http://autopoi.ru/images/pencil.gif ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 23:46 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Геморроем и зоопарком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 23:48 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Всяко лучше чем тупая реклама перед скачиванием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2014, 00:00 |
|
||
|
как лучше и безопаснее организовать страничку с URL-ами на скачку
|
|||
|---|---|---|---|
|
#18+
Особенно лучше регистрировать пользователей этого ftp. Особенно, с учётом того, что тот, кто хочет показать рекламу ftp - точно не выберет. Нет, для инфраструктуры, где пользователи уже есть и надо просто раздать права, ftp - вполне нормальное решение. Но как публичный ресурс - три поросёнка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2014, 00:25 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38723957&tid=2126718]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
190ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 489ms |

| 0 / 0 |
