【问题标题】:Max File Extension Length最大文件扩展名长度
【发布时间】:2009-01-06 16:06:36
【问题描述】:

文件扩展名是否有最大长度?我见过最长的是 .compiled (8 chars)

无用的背景

我正在创建一个 IHttpHandler 来返回特定文件名的图像图标。我只是调用 FileImage.axd?ext=pptx。我使用类似于 WPF 的my post 的 SHGetFileInfo 动态生成文件,然后将它们本地缓存在文件名为“pptx.png”的文件夹中。我想验证长度并对其进行修剪以防止 DoS 类型的攻击,在这种攻击中有人会尝试为无限数量的垃圾字符生成图像(例如 FileImage.axd?ext=asdfasdfweqrsadfasdfwqe...)。

【问题讨论】:

    标签: asp.net file-io


    【解决方案1】:

    据我所知,没有限制,除了文件名的最大长度。除 FAT16 外,扩展名没有特殊处理。

    【讨论】:

    • 很遗憾,这并没有给我一个解决方案。我想我将它限制为 10。图像将从网络服务器加载,所以我想知道 IIS 网络服务器的标准构建中最长的扩展是什么。
    • 解决方案是 - 编写代码,使其可以与任何扩展大小一起使用,避免 C 程序员病。
    【解决方案2】:

    我同意 Arkadiy 的观点 - 现在没有正式的限制,因为 DOS 8.3 系统已成为过去(或其他类似的受限系统)。我会说我见过的大多数扩展都在 1-3 范围内; Java 对 .java 使用 4,对 .class 使用 5。您的 8 示例比我记得的要长。如果我要确定范围,我的目标是“无限”;如果这不可行,请允许至少 16 个字符 - 确信实际上 16 个字符对于当前系统来说已经足够了。

    【讨论】:

    • 如果这在 Unix 环境中应用过,像 .profile 这样的文件的名称可能超过 16,当然整个名称是一个扩展名:)
    • 我想这取决于您对扩展的定义。除非在点之前有什么东西,否则我不会将其视为扩展,但替代观点在逻辑上也是站得住脚的。此外,这些扩展名都是唯一的 - 您不能在一个目录中拥有 16 个全部称为 .profile 的文件。
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2011-09-28
    • 2016-10-09
    • 2012-10-23
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多