【问题标题】:Content Types in browsers, can we use the Mime?浏览器中的内容类型,我们可以使用 Mime 吗?
【发布时间】:2010-05-15 13:42:44
【问题描述】:

我想知道哪些 mime 类型在浏览器中被设置为内容类型是危险的,如果有的话??

我注意到许多论坛软件在上传文件时,对除图像以外的任何文件使用 application/octet-stream,并在输出时将其放入 header 的 Content Type 中。我想知道他们为什么不将实际的 mime-type 放入 Content Type 中?这是否涉及安全风险?到目前为止,我已经使用了 text/css、text/plain、audio/mpeg 和许多其他工具,并且没有注意到 application/octet-stream 与其他工具之间有任何区别。

有没有人知道确切的区别,以及是什么让 application/octet-stream 更好或更差...用于内容类型??

或者可能存在浏览器限制?

我说的是在上传文件时获取内容类型,使用 $_FILES['myFile']['type'],将该信息存储到数据库中,而不是在该文件的标题中使用该内容类型被召唤时。这是否涉及任何安全风险?和/或浏览器限制?

更新

如果用户在 IE 中上传文件,我使用 $_FILES ['type'] 变量将 mime-type 存储到数据库中,然后另一个用户访问该文件,我从使用 IE mime 类型上传的文件的数据库,并且该用户正在使用 Firefox 访问该文件,这会导致任何问题吗?反之亦然,并且想知道这是否会成为任何浏览器的问题。

谢谢你:)

【问题讨论】:

    标签: content-type mime-types


    【解决方案1】:

    您基本上可以使用您喜欢的任何 mime 类型。如果浏览器理解 mime 类型,它会尝试渲染它;如果浏览器为特定的 mime 类型设置了插件,它将尝试启动它;否则你只会得到一个下载对话框。

    之所以使用application/octet-stream 是因为它或多或少暗示了一个下载对话框将显示在浏览器中。因此,通过在 Content-Type 标头中使用该 MIME 类型,您可以强制浏览器显示下载对话框。这基本上是在这种情况下使用它的唯一原因。

    【讨论】:

    • 你好,你能给我一个mime类型的例子吗?除了图像mime类型之外,它会尝试由浏览器呈现吗?此外,如果用户在 Internet Explorer 中上传文件,然后另一个用户尝试在 Firefox 中访问该文件,这会导致 mime 类型出现问题吗?我相信 Firefox 和 IE 以不同的方式读取某些文件类型作为不同的 mime 类型。但我的问题是这会在这种情况下导致问题,反之亦然?
    • 此外,您是说如果浏览器无法识别 mime 类型,它会自动给它一个下载对话框吗?所有浏览器都是这样吗?如果是这样,那他们为什么还要费心使用application/octet-stream?再次感谢。
    • 如何上传文件并不重要,因为 mime 类型本身不会被传输,但大多数时候(如果根本没有忽略)从文件扩展名中猜测(服务器可以这样做)。在浏览器中呈现的简单 mime 类型几乎都是示例文本 mime 类型,或者安装了阅读器插件时的 pdf。无论如何,它取决于浏览器、可用插件和设置(例如,您可以在 Firefox 中为 mime 类型设置可用的应用程序)。无论如何,如果您确定 MIME 类型,并且不想强迫人们下载文件,[...]
    • [...] 只提供正确的类型。浏览器或插件添加对它们的支持是有原因的,人们可能会设置他们的设置来执行不同的操作。这样一来,发生什么应该由用户决定。否则你是对的,如果 mime 类型未知,浏览器会提供一个下载对话框;除了application/octet-stream。该 mime 类型是标准化的,并且当客户端尝试打开它时,下载操作作为推荐操作(请参阅tools.ietf.org/html/rfc2046#page-13)。因此,当您想要执行此操作时,请仅使用此操作。
    • 然而,有更好的方法来强制下载。 Content-Disposition,一个。
    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 2010-11-12
    • 2014-12-19
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多