1

我正在和几个朋友一起做一个小项目,并设置了一个非常简单的 PHP 上传脚本,只有某些用户可以访问。我不担心针对服务器的任何类型的攻击,因为这是为了好玩,但我确实有一个问题。

我已经创建了一个子域(static.foo.bar),上传的文件将移至该子域。该子域关闭了 mod_php,以防止恶意上传和执行 php 脚本。该脚本还检查文件扩展名和 mime 内容类型,但我认为这些很容易被绕过/欺骗。

但是,用户可以轻松上传 .html 文件并将其重定向到其他地方。同样,他们可以上传图像文件并让它在浏览器中显示图像,而不是被要求下载图像。

我认为这是浏览器的行为,但我也注意到,在将文件上传到 sendspace(或任何其他服务)时,即使文件是 .html(和有效的 html),它也会要求用户下载它而不是在网站上显示。

我在 CentOS 上运行 Apache。

我该如何做到这一点?

4

1 回答 1

1

ForceType可能是您正在寻找的。

# In your .htaccess file
<Location /uploads_directory>
    ForceType application/octet-stream
</Location>

您希望将所有文件的 mime 类型设置为,application/octet-stream以便浏览器下载它们而不是尝试显示内容。

于 2012-08-16T05:41:44.037 回答