2011-09-29 233 views
0

我建立一个文件共享网站,我想,我希望我的用户能够上传和分享任何东西。允许用户上传任何东西

听起来很危险,我知道。但是,有没有一种方法可以让这成为可能?例如,当用户用MIME类型请求链接时强制下载?而不是在页面上“跑步”。

任何想法如何让没有安全问题的任何文件类型。

感谢

+0

大多数浏览器阻止可执行文件的自动下载,但用户可以接受提示并忽略警告。你在问如何规避这个警告? – aus

+2

我很困惑。你的问题标题和第一句话是关于允许上传,而你的第二句话是关于强制下载。我不知道你在说什么。然后你的第三个问题说“如何允许一个文件类型”但没有明确的上下文 - 允许什么,允许什么,允许什么目的? –

+0

也,你没有发布代码。没有代码,即使你的问题确实有意义也很难帮助你 –

回答

4
  1. 商店上不通过浏览器用户可访问的某个位置。 (所以在文件根目录下)
  2. 加载文件时,使用readfile()函数。
  3. 设置正确的标题,其中包括:

    header("Content-Description: File Transfer"); 
    header("Content-Disposition: attachment; filename=[INSERT FILENAME HERE]"); 
    

    而且还使用了正确的Content-Type头为每种类型的文件

+0

有趣!这个解决方案有没有安全防范措施? –

+1

始终确保文件不会在服务器上执行,因为它可能会损害您的服务器。除此之外,我不会看到任何重大风险 –

+1

完美。欣赏响应,经过一番研究后,这似乎成为许多人在运行无限制文件存储服务器时所使用的解决方案。 –

-1

任何想法如何让没有安全问题的任何文件类型。

你自己说出来。这就像是想制作炒鸡蛋,而不想打破鸡蛋。

+0

那么Megaupload和Rapidshare如何设法做到这一点? –

2

如果您只希望它对其他用户是危险的(因为他们将立即共享病毒缠绕的文件),但为代码注入攻击提供一些保护,您可能会考虑将上传保存在数据库BLOB字段。这应该至少使注入将在服务器上运行的代码更难。

+0

这会在下载大文件时向SQL服务器添加巨大负载吗? –

1

您可以允许用户通过一个简单的HTML multipart formPHP's $_FILES一起上传任何东西。只有我看到的问题是文件大小限制。

你不是可以简单地张贴链接到任何文件。用户的浏览器设置决定文件是否被执行或下载,而不是你的。所以你可以建议他们右键点击它们,并选择'保存到',但除此之外它是有限的。