我从 IIS 转到 Apache,最近发现 Apache 默认将未知文件扩展名的文件作为纯文本提供。
如果用户使用某些程序将 .php 文件备份为 .php~,则可能会出现问题。然后,只需在浏览器中导航到 .php~ 文件,即可完全读取该文件。更糟糕的是,这些 .php~ 文件通常被视为对用户“隐藏”在 Linux 环境中,因此有些人甚至可能不知道它们的存在。机器人就是围绕这一事实创建的,它们会在互联网上搜索流行的文件名备份,并从中提取可能安全的信息。
我已经知道如何停止提供 .php~ 文件或任何特定文件扩展名。我还知道不要使用任何会保存此类备份文件的编辑器。
我的问题是,我如何才能停止这种默认的 Apache 行为,即提供任何非 MIME 文件类型?我只是不喜欢这种行为,并想停止它。我不希望它提供 .aspx~、.html~、.bob、.carl、无扩展名或任何其他非真正 MIME 类型的文件。
我知道我可能可以使用指令首先拒绝访问所有文件类型。然后逐个添加我想要提供的文件类型。但我想知道是否有更简单/更快捷的方法。
谢谢你的帮助。
答案1
Apache HTTPd 默认对未知文件使用 mime 类型 application/octet-stream。因此,理论上,您应该能够使用 mod_actions 对其设置操作,如下所示:
Action application/octet-stream /cgi-bin/unknown-mime-type.cgi
当然,CGI 脚本必须可用且可执行,或者您可以为给定的路径添加重写以提供 404 页面。但我不确定这是否明智。