Opened 12 years ago
Closed 12 years ago
#520 closed defect (wontfix)
Не определяется расширение файла при отсутствии названия файла
| Reported by: | Andrew Krasichkov | Owned by: | |
|---|---|---|---|
| Priority: | minor | Milestone: | |
| Component: | nginx-core | Version: | 1.5.x |
| Keywords: | Cc: | ||
| uname -a: | Linux AKrasichkovNotebook 3.13.6-1-ARCH #1 SMP PREEMPT Fri Mar 7 22:47:48 CET 2014 x86_64 GNU/Linux | ||
| nginx -V: |
nginx version: nginx/1.5.12
built by gcc 4.8.2 20140206 (prerelease) (GCC) configure arguments: |
||
Description
Во всех актуальных версиях nginx (проверял на 1.4.x и 1.5.x) наблюдается ситуация с не правильным парсингом расширения файла при отсутствии названия файла (имя файла до точки), что приводит к установке дефолтного Content-Type содержимого. С одной стороны это не столь значимо, но порой вынуждает разработчиков городить костыли вокруг этой особенности, т.к. при отсутствии правильного Content-Type и включенного mime-сниффинга в Internet Explorer существует риск XSS нападения, например, через загрузку вполне валидной (по мнению PHP) картинки. Разумеется, мы всем рекомендуем выставлять соответствующий заголовок вне зависимости от контекста приложения и используемого веб-сервера, но слушаются далеко не все:-(
Имеем стандартную конфигурацию и два файла: .jpg и test.jpg
Ожидаемый результат при обращении к ним:
$ http -h http://localhost:8081/test.jpg HTTP/1.1 200 OK Accept-Ranges: bytes Connection: keep-alive Content-Length: 5 Content-Type: image/jpeg Date: Tue, 11 Mar 2014 12:51:53 GMT ETag: "531f00c1-5" Last-Modified: Tue, 11 Mar 2014 12:25:37 GMT Server: nginx/1.5.12 $ http -h http://localhost:8081/.jpg HTTP/1.1 200 OK Accept-Ranges: bytes Connection: keep-alive Content-Length: 5 Content-Type: image/jpeg Date: Tue, 11 Mar 2014 12:51:56 GMT ETag: "531f00c1-5" Last-Modified: Tue, 11 Mar 2014 12:25:37 GMT Server: nginx/1.5.12
Актуальный:
$ http -h http://localhost:8081/test.jpg HTTP/1.1 200 OK Accept-Ranges: bytes Connection: keep-alive Content-Length: 5 Content-Type: image/jpeg Date: Tue, 11 Mar 2014 12:54:46 GMT ETag: "531f00c1-5" Last-Modified: Tue, 11 Mar 2014 12:25:37 GMT Server: nginx/1.5.12 $ http -h http://localhost:8081/.jpg HTTP/1.1 200 OK Accept-Ranges: bytes Connection: keep-alive Content-Length: 5 Content-Type: application/octet-stream Date: Tue, 11 Mar 2014 12:54:48 GMT ETag: "531f00c1-5" Last-Modified: Tue, 11 Mar 2014 12:25:37 GMT Server: nginx/1.5.12
Attachments (1)
Change History (4)
by , 12 years ago
| Attachment: | exten_parsing_fix.patch added |
|---|
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Я встречал различные трактовки файлов с такими именами (например, Python иного мнения, нежели Apache и PHP), поэтому отношу это к вопросу религии.
Если таково вероисповедание nginx - хорошо;-) Закроете тикет?
comment:3 by , 12 years ago
| Resolution: | → wontfix |
|---|---|
| Status: | new → closed |
С учётом того, что Apache ведёт себя также, не вижу смысла что-то менять.

ИМХО
.jpgправильно трактовать как скрытый файл с именем jpg, особенно с учетом того, что такой сущности, как файл без имени, не существует.