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

Vitaly Puzrin vitaly at rcdesign.ru
Sat Nov 14 01:38:15 MSK 2009


Игорь, спасибо большое.

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

Пока только надумал, что можно жестко ограничить расширения файлов в
фильтре. Что-нибудь еще надо предусмотреть?

Vitaly Puzrin
http://www.rcdesign.ru



13 ноября 2009 г. 23:56 пользователь Igor Sysoev <is at rambler-co.ru> написал:
> On Fri, Nov 13, 2009 at 11:37:54PM +0300, Igor Sysoev wrote:
>
>> On Fri, Nov 13, 2009 at 11:15:55PM +0300, Vitaly Puzrin wrote:
>>
>> > Есть форум, куда юзеры льют картинки и прочую лабуду. Естественно,
>> > каждый называет файлы "как умеет". Сейчас "настоящие" имена  хранятся
>> > в базе, а на диске имена содержат только циферки. Все раздается
>> > скриптом -  генерятся хедеры с правильным именем, и делается
>> > accel-redirect на бинарник.
>> >
>> > Хочется вызов скрипта исключить совсем. Но хранить произвольные имена
>> > в файловой системе - стремно. Могут и на японском что-нибудь запихать,
>> > и файлы с одинаковыми именами.
>> >
>> > Существует ли какое-то красивое решение? Пока думал, что можно на
>> > вебстраничках нагенерить хитрых ссылок, где не только путь к
>> > бинарнику, но и желаемое имя, под которым надо отдать. А дальше
>> > встроенным перлом прямо в nginx заголовки составлять и доклеивать
>> > блоб. Не уверен, что это самый разумный метод. Может кто подскажет
>> > получше?
>>
>> Для ссылок вида "/files/1/2/345678?name=хитрое%20японское%20имя" можно
>> без перла:
>>
>>   location /files/ {
>>       root         /path/to/files;
>>       add_header   Content-Disposition 'attachment; filename="$arg_name"';
>>   }
>
> Или так:
>
>  /files/1/2/345678/хитрое%20японское%20имя
>
>   location ~ ^(/files/.+)/([^/]+)$ {
>       alias        /path/to/files$1;
>       add_header   Content-Disposition 'attachment; filename="$2"';
>   }
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
>


More information about the nginx-ru mailing list