알 수없는 파일 형식 MIME?


답변:


184

application/octet-stream알 수없는 유형에 사용할 수 있습니다.

섹션 4.5.1의 RFC 2046 상태 :

"옥텟 스트림"하위 유형은 본문에 임의의 이진 데이터가 포함되어 있음을 나타내는 데 사용됩니다.


3
실제로 RFC마다 알 수없는 데이터가있는 유형 정보를 보내면 안됩니다. RFC-2046은 알려진 유형 만 정의하지만 RFC-7231은 알려지지 않은 유형을 처리하는 방법을 알려줍니다.
Sampo Sarrala-codidact.org

@SampoSarrala RFC-7231을 조금 다르게 읽었습니다. "Content-Type 헤더 필드가 없으면 수신자는"application / octet-stream "([RFC2046], 섹션 4.5.1)의 미디어 유형을 가정 할 수 있습니다. 또는 데이터 유형을 확인하려면 데이터를 조사하십시오. " 나는 우리가 NO Content-Type을 보내거나 클라이언트가 컨텐츠 검사로 추측 게임을하는 것을 원하지 않으면 기본값으로 application / octet-stream을 전송하는 것이 안전하다는 것을 해석합니다.
Jpnh

1
@Jpnh 예, 그렇습니다. Content-Type 헤더는 알 수 없을 때마다 존재하지 않아야합니다. 응용 프로그램 / 옥텟 스트림을 보낼 수도 있습니다. 기본적으로 클라이언트에게 " 지금 표시하고 싶지는 않지만 대신이 바이트를 파일에 저장하십시오 "라고 알려줍니다 . 이것은 웹 클라이언트가 파일 저장을 제공하게합니다. 옵션 1 ==이 파일에 대해 아무것도 모릅니다. 옵션 2 == 파일 내용은 mime을 사용하여 설명 할 수 없거나 디스크에만 저장해야합니다. 실제로 두 옵션 중 하나가 맞습니다. 혼란을 피하기 위해 더 나은 표현을 선택 했어야합니다.
Sampo Sarrala-codidact.org

4
"임의 이진 데이터"는 "알 수 없음"이 아닙니다. application / octet-stream을 사용하면 컨텐츠 유형이 알려져 있고 텍스트 나 이미지가 아니라 임의의 이진 데이터이므로 브라우저에 파일로 다운로드하여 실행해야한다고 알려줍니다. 잘못된 것 외에도, 이것은 특히 눈에 잘 띄지 않는 최신 다운로드 관리자를 고려할 때 보안 허점입니다. 정답은 컨텐츠 유형 헤더가 아닙니다. 어떤 종류의 파일인지 모르는 경우, 브라우저는 파일을 알 수 있으므로 특히 사용 컨텍스트 (이미지, 문서, 스크립트 등)를 알고있을 때 추측하도록하십시오.
FF_Dev

@FF_Dev 말도 안 돼요. "임의 이진 데이터"는 "실행 가능"을 의미하지 않습니다. 브라우저 (또는 다운로드 관리자)가 application/octet-stream파일을 실행할 수 있다고 가정 할 이유가 없습니다 . 브라우저 실행 파일을 고의로 다운로드 하더라도 사용자의 요청없이 "실행 가능"하지는 않습니다. 실행 파일을 다운로드한다고해서 지금 실행하고 싶다는 의미는 아닙니다. application/octet-stream다운로드시 자동으로 파일을 실행할 수있는 브라우저가 있는 경우 동작을 재현하는 방법과 방법을 알려주십시오. 지금은 당신을 믿지 않습니다.
Mark Amery

38

RFC 자원 :

우리는 RFC-2046 (미디어 유형) 대신 RFC-7231 (HTTP / 1.1 의미론 및 내용)을 참조로 사용해야합니다. 질문은 HTTP 내용 유형에 관한 것이기 때문입니다.

또한 RFC-2046은 알 수없는 유형을 명확하게 정의하지 않지만 RFC-7231은 명확하게 정의합니다.

짧은 답변:

알 수없는 데이터에 대해서는 MIME 유형을 보내지 마십시오.
더 명확하게 : Content-Type 헤더를 전혀 사용하지 마십시오.

참고 문헌 :

RFC-7231
하이퍼 텍스트 전송 프로토콜 (HTTP / 1.1) : 시맨틱 스 및 컨텐츠
3.1.1.5. 컨텐츠 타입

페이로드 본문을 포함하는 메시지를 생성하는 발신인 은 동봉 된 표현

의도 된 미디어 유형이
발신자 에게 알려지지 않은 경우 해당 메시지에 Content-Type 헤더 필드를 생성해야합니다 (SHOULD) .

이 섹션은 확실하지 않은 경우 제외하도록 명확하게 지시합니다. 또한 수신기가 유형이 응용 프로그램 / 옥텟 스트림이라고 가정 할 수 있지만 다른 유형 일 수도 있습니다.

그럼 뭐가 달라?

RFC-2046
4.5.1. 옥텟 스트림 하위 유형


"application / octet-stream"엔티티 를 수신하는 구현에 권장되는 조치 는
컨텐츠 전송 인코딩이 실행 취소 된 상태에서 파일에 데이터를 넣거나
사용자가 지정한 입력으로 사용하는 것입니다. 방법.

그리고 이미 위에서 언급했듯이 :

RFC-7231
3.1.1.5. 컨텐츠 타입

Content-Type 헤더 필드가 존재하지 않는 경우, 수신자는 미디어 유형 "application / octet-stream"
([RFC2046], 섹션 4.5.1)을 가정하거나 데이터를 검사하여 유형을 결정할 수 있습니다.

결론:

"application / octet-stream"으로 정의하면 "application / octet-stream"임을 알 수 있습니다.

당신이 그것을 정의하지 않으면 당신은 그것이 무엇인지 모르고 수신기와 수신기에 결정을 내린 다음 오리와 같이 걷는 지 확인할 수 있다고 말하고 있습니다 ...


1
이 답변은 진실의 유일한 것이므로 공감할 가치가 있습니다. 또한 기본적으로 "application / octet-stream"을 사용하면 거의 보이지 않는 최신 다운로드 관리자를 고려할 때 보안 허점 인 대부분의 브라우저 트리거 다운로드가 수행됩니다.
FF_Dev

1
이것은 HTTP에 대해서는 맞지만 문제는 일반적으로 HTTP가 아니라 MIME에 관한 것입니다. 예를 들어 이메일에서 규칙은 완전히 다릅니다. 제안 된 중복 stackoverflow.com/questions/12539058/…에
tripleee

나는 같은 이유로 uptick를 주었지만 FF_Dev에 동의합니다. 의도가 "애플리케이션 / 옥텟 스트림"이고 다운로드를 트리거하지 않는 한 "애플리케이션 / 알 수 없음"이 필요합니다. "Content-Disposition"이 설정되어 있지 않으면 브라우저가 파일을 다운로드하려고 시도하지 않아도 파일 이름을 설정하지 않고 파일을 다운로드하는 웹 사이트가 너무 많을 수 있습니다. 특히 은행.
justdan23

14

나는 선호 application/unknown하지만 결과는 다음과 동일합니다.application/octet-stream


17
application / octet-stream 대신 application / unknown을 사용할 수있는 표준이 있습니까?
Hendrik Brummermann

3
감사! 응용 프로그램 / 알 수 없음이 훌륭하게 작동하며 옥텟 스트림으로 인해 샘플 png 파일에서 크롬 오류가 발생합니다!
fnkr

10
.png 파일을 application/octet-stream또는 로 제공해야하는 이유는 무엇 application/unknown입니까? 그들이 발명 한 이유가 image/png있습니다.
Aidiakapi

10
@ jenson-button-event 바퀴를 재발 명하는 것과는 아무런 관련이 없습니다. MIME 유형은 의도를 지정합니다. 전송하는 것이 png 이미지 여야한다는 것을 알고 있다면 해당 정보를 전달하십시오. 바이트가 실수로 jpeg를 나타내는 경우 응용 프로그램은 유효한 png가 아니며 다른 곳에 버그가 있음을 경고 할 수 있습니다. 또한 모든 응용 프로그램이 브라우저만큼 강력하고 내결함성이있는 것은 아닙니다. 그것들은 프로그래머의 실수를 고치도록 설계되었지만, 그 목적이 가까운 곳에는 없습니다. 브라우저는 MIME 형식을 사용하는 유일한 응용 프로그램이 아닙니다.
Aidiakapi

2
당신의 참조는 무엇입니까? 알 수없는 유형은 파일의 내용이나 상태에 관한 정보를 제공하지 않거나 바이너리 또는 텍스트 기반 인 경우에도 프로덕션 코드에 너무 모호합니다. 파일 mimetype이 없으면 작은 프로젝트에는 적합하지 않습니다. OS에서 핸들러는 기본적으로 다운로드 가능한 바이너리이며 알 수없는 유형은 Windows OS에서 알려진 핸들로, 작업을 할당 할 수 있습니다 (예 : 메모장으로 알 수없는 파일 열기). 나쁜 습관이지만 알 수없는 유형을 이것 과 결합하여 실행을 건너 뛸 수 있습니다 : /
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.