Mime Tipo Desconhecido Binario Opcoes




Manual: Deteccao de tipo MIME O MediaWiki tenta detectar o tipo MIME dos arquivos que voce carrega e rejeita o arquivo se a extensao de arquivo nao corresponder ao tipo mime (O arquivo esta corrompido ou tem uma extensao incorreta). Se voce estiver recebendo esse erro para arquivos validos, tente usar um comando externo para detectar o tipo MIME (veja abaixo). Nota: Antes de o metodo configurado para a deteccao MIME ser chamado, algumas verificacoes codificadas sao aplicadas. Use o log de depuracao para descobrir se essas verificacoes causam falso-positivos. (Por exemplo, 1.15.3 pode misdetect. doc-arquivos de MS Word 2007 como arquivos ZIP.) Para configurar quais tipos de arquivos MediaWiki aceitara para uploads, use wgFileExtensions. Se instalado, o MediaWiki usa o modulo FileInfo do PHP ou o modulo MimeMagic mais antigo. Se voce esta recebendo um erro como mimemagic nao pode ser inicializado, arquivo magico nao esta disponivel. Este modulo nao esta configurado corretamente consulte a documentacao do PHP para obter informacoes sobre como corrigir isso, ou use um comando de detector mime externo em vez disso (veja abaixo). No caso de voce ter o modulo FileInfo instalado, mas nao carregado automaticamente, voce tambem pode tentar definir wgLoadFileinfoExtension true. Assim os modulos sao carregados por PECL em tempo de execucao. Como alternativa, um comando externo pode ser configurado para detectar o tipo mime, definindo a opcao wgMimeDetectorCommand. A configuracao mais comum e: Isso usa o utilitario de arquivos GNU para determinar o tipo do arquivo, que deve funcionar imediatamente em Linux. Observe que o utilitario de arquivo fornecido por outros Unixes pode nao suportar a opcao - i e, portanto, nao funcionara. O utilitario de arquivos GNU tambem esta disponivel para Mac OS-X e para Windows via Cygwin. Se nenhum modulo mime estiver instalado e nenhum comando de detector de mimica externo estiver configurado, o MediaWiki confia no modulo GD do PHP para detectar o tipo mime. Note que isso so funciona para alguns tipos de imagem bem conhecidos (veja 1), outros arquivos serao aceitos sem qualquer verificacao adicional Voce tambem pode desativar a verificacao de tipo MIME completamente definindo wgVerifyMimeType nota falsa no entanto que isso e muito inseguro: arquivos arbitrarios podem entao Ser carregado com uma extensao de arquivo inofensivo, mas possivelmente ainda pode ser executadointerpretado de uma forma prejudicial no computador cliente, ou o servidor web. Editando MediaWiki usa dois arquivos para verificar e interpretar o tipo mime ambos sao arquivos simples, com uma entrada por linha e itens em uma linha separados por espaco em branco que estao localizados no diretorio inclui de Sua instalacao MediaWiki. Se voce quiser carregar tipos incomuns de arquivos, talvez seja necessario adicionar as informacoes apropriadas aqui: mime. types e usado para mapear tipos MIME para extensoes de arquivo, e vice-versa. Ele contem uma linha por tipo mime o primeiro item na linha e o tipo MIME (canonico veja abaixo), os itens a seguir sao extensoes de arquivo que sao permitidas para este tipo mime (este e o mesmo formato usado para o padrao mime. info Arquivos em sistemas LinuxUnix). Por exemplo, para arquivos JPEG, aplica-se a seguinte linha: Observe que o tipo MIME de alguns formatos de arquivo pode ser detectado de forma muito ampla qualquer formato baseado em XML pode aparecer como textxml. Qualquer formato ZIP como applicationzip. Etc. Consequentemente, as extensoes de arquivo para tais formatos devem ser associadas com o tipo MIME mais amplo, por exemplo: mime. info e usado para resolver aliases para tipos MIME e para atribuir um tipo de midia a eles. Ele contem uma linha por tipo mime, o primeiro item na linha e o nome do tipo MIME canonico (que sera usado internamente), o ultimo item e do formato XXX e define o tipo de midia para o tipo mime. Todos os itens intermediarios sao nomes secundarios do tipo MIME. Alguns exemplos: Note que para arquivos OGG, o tipo de midia e determinado programaticamente: AUDIO para vorbis, VIDEO para theora, MULTIMEDIA caso contrario. O tipo de midia e especifico do MediaWiki e determina que tipo de midia esta contido no arquivo, ao contrario do formato no qual o arquivo esta. Essas informacoes sao armazenadas na tabela de imagens. Juntamente com o tipo mime. Atualmente nao e usado para muito, mas poderia ser usado no futuro para determinar como apresentar um arquivo para o usuario. Os seguintes tipos sao definidos: Alem da opcao wgFileExtensions, as seguintes configuracoes podem fazer com que os arquivos sejam rejeitados (mesmo se wgStrictFileExtensions false estiver definido): Alem disso, o MediaWiki rejeita todos os arquivos que parecem scripts que podem ser acidentalmente executados no Servidor web ou o navegador de usuarios. Notavelmente, qualquer coisa que pareca um dos seguintes formatos sera rejeitada, independentemente do tipo de mime detectado ou extensao de arquivo: HTML, JavaScript, PHP, shell scripts. Observe que a deteccao de HTML e JavaScript e bastante ampla e pode reportar falsos positivos, pois o Microsoft Internet Explorer e conhecido por interpretar arquivos que parecem HTML, independentemente da extensao de arquivo ou do tipo MIME relatados pelo servidor web, o que seria Levam o site a ser vulneravel a ataques de scripts entre sites. Se voce realmente quiser permitir ate mesmo esses arquivos perigosos, voce pode invadir a funcao detectScript no arquivo UploadBase. php para sempre retornar false. Tipos MIME ao fazer o download Editar Observe que o tipo MIME usado quando o arquivo real e exibido para o navegador dos usuarios nao e determinado pela deteccao MIME do MediaWikis: os arquivos nao sao exibidos por meio do MediaWiki, mas diretamente pelo servidor web. Assim, o servidor web deve ser configurado para usar o tipo MIME correto para cada extensao de arquivo, por exemplo, se voce tiver problemas para visualizar arquivos SVG no seu navegador, verifique se o servidor esta configurado para exibi-los como imagesvgxml. (Para o Apache, leia sobre o modmime). Discussao mais antiga no meta: 4 O campo Content-Type Header O proposito do campo Content-Type e descrever os dados contidos no corpo o suficiente para que o agente de usuario receptor possa escolher um agente ou mecanismo apropriado para apresentar os dados ao usuario , Ou lidar com os dados de forma adequada. O campo de cabecalho Tipo de conteudo e usado para especificar a natureza dos dados no corpo de uma entidade, fornecendo identificadores de tipo e de subtipo e fornecendo informacoes auxiliares que podem ser necessarias para determinados tipos. Apos os nomes de tipo e subtipo, o restante do campo de cabecalho e simplesmente um conjunto de parametros, especificado em uma notacao de valor de atributo. O conjunto de parametros significativos difere para os diferentes tipos. A ordenacao dos parametros nao e significativa. Entre os parametros definidos esta um parametro charset pelo qual o conjunto de caracteres usado no corpo pode ser declarado. Os comentarios sao permitidos de acordo com as regras RFC 822 para campos de cabecalho estruturados. Em geral, o Content-Type de nivel superior e usado para declarar o tipo geral de dados, enquanto o subtipo especifica um formato especifico para esse tipo de dados. Assim, um Content-Type de imagexyz e suficiente para dizer a um agente de usuario que os dados sao uma imagem, mesmo que o agente do usuario nao tenha conhecimento do formato de imagem especifico xyz. Essas informacoes podem ser usadas, por exemplo, para decidir se um usuario deve ou nao mostrar os dados brutos de um subtipo nao reconhecido - tal acao pode ser razoavel para subtipos de texto nao reconhecidos, mas nao para subtipos nao reconhecidos de imagem ou audio. Por esta razao, subtipos registados de audio, imagem, texto e video, nao devem conter informacoes incorporadas que sao realmente de um tipo diferente. Tais tipos de compostos devem ser representados usando o multipart ou tipos de aplicacao. Os parametros sao modificadores do subtipo de conteudo e nao afetam fundamentalmente os requisitos do sistema host. Embora a maioria dos parametros faca sentido apenas com certos tipos de conteudo, outros sao globais no sentido de que eles podem se aplicar a qualquer subtipo. Por exemplo, o parametro de limite faz sentido apenas para o tipo de conteudo multipart, mas o parametro charset pode fazer sentido com varios tipos de conteudo. Um conjunto inicial de sete Content-Types e definido por este documento. Este conjunto de nomes de nivel superior pretende ser substancialmente completo. Espera-se que as adicoes ao conjunto maior de tipos suportados geralmente possam ser realizadas pela criacao de novos subtipos desses tipos iniciais. No futuro, mais tipos de nivel superior podem ser definidos apenas por uma extensao a este padrao. Se outro tipo primario for usado por qualquer razao, deve ser dado um nome comecando com X - para indicar seu status nao padronizado e para evitar um conflito potencial com um nome oficial futuro. Na notacao BNF estendida da RFC 822. um valor de campo de cabecalho Content-Type e definido da seguinte forma: Note que a definicao de tspecials e a mesma que a definicao de RFC 822 de specials com a adicao dos tres caracteres, e. Observe tambem que uma especificacao de subtipo e OBRIGATORIA. Nao ha subtipos padrao. Os nomes de tipo, subtipo e parametro nao sao sensiveis a maiusculas e minusculas. Por exemplo, TEXT, Texto e TeXt sao todos equivalentes. Os valores dos parametros sao normalmente sensiveis a maiusculas e minusculas, mas certos parametros sao interpretados como insensiveis a maiusculas e minusculas, dependendo do uso pretendido. (Por exemplo, os limites de varias partes diferenciam maiusculas de minusculas, mas o tipo de acesso para messageExternal-body nao diferencia maiusculas de minusculas.) Alem dessa sintaxe, a unica restricao na definicao de nomes de subtipos e o desejo de que seus usos nao entrem em conflito. Ou seja, seria indesejavel ter duas comunidades diferentes usando Content-Type: applicationfoobar para significar duas coisas diferentes. O processo de definicao de novos subtipos de conteudo, entao, nao pretende ser um mecanismo para impor restricoes, mas simplesmente um mecanismo para divulgar os usos. Ha, portanto, dois mecanismos aceitaveis ??para a definicao de novos subtipos de tipo de conteudo: Os valores privados (comecando com X-) podem ser definidos bilateralmente entre dois agentes cooperantes sem registro externo ou padronizacao. Novos valores-padrao devem ser documentados, registrados e aprovados pela IANA, conforme descrito no Apendice F. Se forem destinados para uso publico, os formatos a que se referem tambem devem ser definidos por uma especificacao publicada e possivelmente oferecidos para padronizacao. Os sete tipos de conteudo predefinidos iniciais padrao sao detalhados na maior parte deste documento. Sao: texto informacao textual. O subtipo principal, plain, indica texto simples (nao formatado). Nenhum software especial e necessario para obter o significado completo do texto, alem de suporte para o conjunto de caracteres indicado. Subtipos devem ser usados ??para texto enriquecido em formularios onde o software aplicativo pode melhorar a aparencia do texto, mas esse software nao deve ser exigido para obter a ideia geral do conteudo. Os subtipos possiveis incluem assim qualquer formato de processador de texto legivel. Um subtipo muito simples e portatil, richtext, e definido neste documento. Multipart dados consistindo de varias partes de tipos de dados independentes. Sao definidos quatro subtipos iniciais, incluindo o subtipo primario misto, alternativo para representar os mesmos dados em multiplos formatos, paralelo para partes destinadas a ser visualizadas simultaneamente, e digerir para entidades multipartas em que cada parte e de tipo mensagem. Mensagem encapsulada. Um corpo de mensagem Content-Type e propriamente uma mensagem conformada RFC 822 totalmente formatada que pode conter seu proprio campo cabecalho Content-Type diferente. O subtipo principal e rfc822. O subtipo parcial e definido para mensagens parciais, para permitir a transmissao fragmentada de corpos que se pensa serem muito grandes para serem passados ??atraves de instalacoes de transporte de correio. Outro subtipo, Corpo externo, e definido para especificar corpos grandes por referencia a uma fonte de dados externa. Imagem de imagem. A imagem requer um dispositivo de exibicao (como uma tela grafica, uma impressora ou uma maquina de FAX) para exibir as informacoes. Subtipos iniciais sao definidos para dois formatos de imagem amplamente utilizados, jpeg e gif. Dados de audio e audio, com o subtipo inicial basico. O audio requer um dispositivo de saida de audio (como um alto-falante ou um telefone) para exibir o conteudo. Dados de video. O video requer a capacidade de exibir imagens em movimento, normalmente incluindo hardware e software especializados. O subtipo inicial e mpeg. Aplicativo algum outro tipo de dados, normalmente dados binarios nao interpretados ou informacoes a serem processadas por um aplicativo baseado em email. O subtipo primario, octet-stream, deve ser usado no caso de dados binarios nao interpretados, caso em que a acao mais simples recomendada e oferecer a escrever as informacoes em um arquivo para o usuario. Dois subtipos adicionais, ODA e PostScript, sao definidos para transportar documentos ODA e PostScript em corpos. Outros usos esperados para aplicacao incluem planilhas, dados para sistemas de agendamento baseados em correio e idiomas para e-mail ativo (computacional). (Observe que o email ativo envolve varias consideracoes de seguranca, que sao discutidas mais adiante neste memorando, particularmente no contexto de applicationPostScript.) As mensagens RFC padrao 822 sao digitadas por este protocolo como texto simples no conjunto de caracteres US-ASCII, que pode ser explicitamente especificado Como Content-type: textplain charsetus-ascii. Se nenhum Content-Type for especificado, por erro ou por um agente de usuario mais antigo, esse padrao e assumido. Na presenca de um campo de cabecalho MIME-Version, um agente de usuario de recebimento tambem pode assumir que o texto US-ASCII simples era a intencao dos remetentes. Na ausencia de uma especificacao MIME-Version, texto US-ASCII simples ainda deve ser assumido, mas a intencao dos remetentes poderia ter sido de outra forma. Deve-se notar que a lista de valores de Content-Type aqui pode ser aumentada no tempo, via Os mecanismos descritos acima, e que o conjunto de subtipos devera crescer substancialmente. Quando um leitor de correio encontra correio com um valor de tipo de conteudo desconhecido, ele geralmente deve trata-lo como equivalente a applicationoctet-stream, como descrito mais adiante neste documento. SampoSarrala Li o RFC-7231 um pouco diferente: quotIf um campo de cabecalho Content-Type Nao esta presente, o destinatario pode assumir um tipo de midia de quotapplicationoctet-streamquot (RFC2046, Seccao 4.5.1) ou examinar os dados para determinar o seu type. quot eu interpretar que, como deveriamos enviar NO Content-Type ou estamos seguros Para enviar applicationoctet-stream como um padrao se nao quisermos que os clientes jogando adivinhando jogos com o exame de conteudo. Ndash Jpnh Mar 19 15 at 20:30 Jpnh Sim, isso e certo. O cabecalho Content-Type nao deve estar presente sempre que for desconhecido. Pode-se tambem enviar applicationoctet-stream, que basicamente diz ao cliente que voce nao quer exibi-lo apenas agora, mas va em frente e salve esses bytes para arquivo em vez quot. Isso faz com que os clientes da web oferecam salvar arquivos. Opcao 1 Nao sei nada sobre este arquivo. Opcao 2 O conteudo do arquivo nao pode ser descrito usando mime ou ele so deve ser salvo no disco. Na pratica, qualquer opcao seria correta. Eu deveria ter escolhido melhor redacao para evitar confusao. Ndash Sampo Sarrala Mar 20 15 at 7:57 quotArbitrary dados binarios nao e quotunknownquot. Usando o applicationoctet-stream voce diz ao navegador que o tipo de conteudo e conhecido, nao e texto nem uma imagem, mas dados binarios arbitrarios e, como resultado, deve ser baixado para o arquivo e, possivelmente, executado. Em cima de estar errado, este e um buraco de seguranca, especialmente considerando gestores de download modernos mal visiveis. A resposta certa nao e cabecalho de tipo de conteudo. Se voce nao sabe qual o tipo de arquivo que e, o navegador pode conhece-lo, entao deixe-o adivinhar, especialmente quando ele conhece o contexto de uso (imagem, documento, script.) Ndash FFDev Mar 1 16 at 11:54 RFC resources: We Deve usar RFC-7231 (HTTP1.1 Semantica e Conteudo) como referencia em vez de RFC-2046 (Tipos de Midia) porque pergunta era claramente sobre HTTP Content-Type. Tambem RFC-2046 nao define claramente tipos desconhecidos, mas RFC-7231 faz. Resposta curta: Nao envie o tipo MIME para dados desconhecidos. Para ser mais claro: Nao use cabecalho Content-Type em tudo. Referencias: RFC-7231 Hypertext Transfer Protocol (HTTP1.1): Semantica e Conteudo 3.1.1.5. Content-Type Um remetente que gera uma mensagem contendo um corpo de carga util DEVE gerar um campo de cabecalho Content-Type nessa mensagem, a menos que o tipo de midia pretendido da representacao incluida seja desconhecido para o remetente. Essa secao claramente diz para voce deixar de fora se voce nao sabe com certeza. Ele tambem diz que o receptor poderia assumir que o tipo e applicationoctet-stream, mas a coisa e que ele tambem pode ser outra coisa. O que e diferente entao A acao recomendada para uma implementacao que recebe uma entidade applicationoctet-stream e simplesmente oferecer para colocar os dados em um arquivo, com qualquer Content-Transfer-Encoding desfeito ou talvez usa-lo como entrada para um processo especificado pelo usuario . E, como ja foi dito acima: Se um campo de cabecalho Content-Type nao estiver presente, o destinatario pode assumir um tipo de midia de applicationoctet-stream (RFC2046, Secao 4.5.1) ou examinar os dados para determinar seu tipo. Conclusao: Se voce defini-lo como applicationoctet-stream, entao voce esta dizendo que voce sabe que e applicationoctet-stream. Se voce nao o define entao voce esta dizendo que voce nao sabe o que e e deixa a decisao ao receptor e ao receptor poderia entao verificar se anda como o pato e. Jenson-button-event Nao tem nada a ver com a reinvencao da roda. O tipo MIME especifica sua intencao. Se voce sabe que o que voce esta enviando e suposto ser uma imagem png, passar essa informacao ao longo. Se os bytes representam acidentalmente um jpeg, seu aplicativo pode avisa-lo de que ele nao e um png valido, e que voce tem um bug em outro lugar. Alem disso, nem todos os aplicativos sao tao robustos e tolerantes a falhas como um navegador. Eles foram projetados para corrigir os erros do programador, mas isso nao esta perto de sua unica finalidade. Um navegador nao e o unico aplicativo que usa tipos MIME. Ndash Aidiakapi Jan 3 15 em 20:44 Svish Historia longa curta. Application47octet-stream e para dados especificos do aplicativo, nao para quando voce nao sabe o que os dados representam. Omitir o tipo MIME indica ao alvo para descobrir como analisa-lo em si. Tudo com tudo, se voce nao o sabe, e nao quer fazer um esforco para conhece-lo, apenas don39t enviar tipos MIME. E tudo sobre comunicacao e interface, nao sobre o navegador pode descobrir isso39. Sim, pode, mas nao deve ter a menos que voce diga. Ndash Aidiakapi Apr 15 15 at 13:10