【问题标题】:Retrieving the full path (server-side) of a file uploaded using Firefox?检索使用 Firefox 上传的文件的完整路径(服务器端)?
【发布时间】:2008-11-06 14:34:27
【问题描述】:

当我使用包含<input id="myFile" type="file" runat="server" /> 的表单上传文件时,我的服务器端代码在使用 Firefox 时只能看到文件名而没有完整路径,而在 IE 中可以正常工作。

在这种情况下是否可以在服务器端检索完整的文件路径?

【问题讨论】:

  • IE 是否给你完整的路径名?!?这是一个严重的安全漏洞。 (不是说我应该感到惊讶......)
  • 是的,确实如此。 “严重”的安全漏洞有点夸大其词,但文件路径中肯定有您可能有充分理由不希望泄露的信息。
  • IE 有意为您提供完整路径(至少在 IE6 和更早版本中)以帮助自动化 Intranet 应用程序。不幸的是,是的,这可能被视为安全漏洞。

标签: firefox file-upload


【解决方案1】:

你不能。实际上,在大多数情况下,只有 IE 提供了对服务器并不重要的信息。至少 FF 和 Opera 都没有提供此信息。
[更新] 还尝试了 Safari,仍然没有路径...有人报告说 Chrome 可能会提供信息,虽然是测试版,但可能会改变...

也许在某些 Intranet 情况下您可能需要它们。在这种情况下,您可能会要求用户将路径粘贴到辅助输入字段中......不是很友好,但至少他们会知道他们提供了信息。

实际上,我知道有些人出于某些原因需要此信息,因此他们使用 JavaScript 从文件输入字段中获取路径并将其放入隐藏字段中。 FF 开发人员发现它不安全(您可以从简单的路径中学到很多东西……比如用户的登录名!)因此在 FF3 中禁止这样的使用,这让一些人对这个版本感到愤怒……

参考:Firefox 3's file upload box 中提到的Firefox 3 annoyance: Keying-in disabled in file upload control ...;还有File input box disabled leads to great usability problem,等等。

【讨论】:

    【解决方案2】:

    您永远无法确保获得完整的文件路径,甚至无法确定在文件上传文件中提交的可靠文件名或内容类型。即使您获得完整的文件路径,您也不知道客户端操作系统上的路径分隔符是什么,或者文件扩展名(如果存在)是否表示任何内容。

    如果您的应用程序需要提交文件的文件路径/文件名/内容类型,而不是为用户提供上传项目的默认标题,那么它做错了,需要修复。

    【讨论】:

      【解决方案3】:

      我已经在评论中说明了这一点,但我认为值得重复。

      Microsoft 选择让文件控件提供文件的完整路径,以便在 Intranet 应用程序中使用。

      HTML 规范仅makes mention 的值应包含在一个位置:

      用户代理可以使用 value 属性作为初始文件 名字。

      但是,他们也有 multipart/form-data 编码should look like 的示例,并且它不包含文件路径。

      换句话说,IE 正在打破标准,你不能依赖其他浏览器,甚至是更高版本的 IE 来支持它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-26
        • 2018-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        • 1970-01-01
        • 2011-07-24
        相关资源
        最近更新 更多