Opened 11 years ago
Closed 11 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 , 11 years ago
Attachment: | exten_parsing_fix.patch added |
---|
comment:1 by , 11 years ago
comment:2 by , 11 years ago
Я встречал различные трактовки файлов с такими именами (например, Python иного мнения, нежели Apache и PHP), поэтому отношу это к вопросу религии.
Если таково вероисповедание nginx - хорошо;-) Закроете тикет?
comment:3 by , 11 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
С учётом того, что Apache ведёт себя также, не вижу смысла что-то менять.
ИМХО
.jpg
правильно трактовать как скрытый файл с именем jpg, особенно с учетом того, что такой сущности, как файл без имени, не существует.