【发布时间】:2013-10-10 05:05:30
【问题描述】:
我正在构建一个允许用户上传音频文件的网络应用程序。
鉴于今天 bitcointalk 出现故障,并且推测它可能已被攻击者上传一段伪装成头像图像的恶意代码所破坏,检查服务器上上传的文件以确保它的最佳方法是什么实际上是一个有效的音频文件吗?是否有我应该使用的库或 PHP 中内置的函数?
【问题讨论】:
-
here's 一篇旧的 SO 文章
我正在构建一个允许用户上传音频文件的网络应用程序。
鉴于今天 bitcointalk 出现故障,并且推测它可能已被攻击者上传一段伪装成头像图像的恶意代码所破坏,检查服务器上上传的文件以确保它的最佳方法是什么实际上是一个有效的音频文件吗?是否有我应该使用的库或 PHP 中内置的函数?
【问题讨论】:
它是否是有效的音频文件并不重要。您可以将有效的“变色龙”文件同时解释为两种文件类型。
上传的文件应该:
使用不是来自用户输入的文件名存储在文件系统上,在一个目录中,网络服务器设置为仅提供静态文件而不执行代码。 (避免一系列代码注入和目录遍历攻击;听起来这是 bitcointalk 的问题,如果他们在 avatars 目录中有一个 .php 文件。)
只能从与主站点不同的主机名(最好是不同的域名)提供服务。 (击败上传内容中的跨站点脚本攻击,因为破坏一次性上传域一无所获。)
验证文件的内容是您可能想要做的事情,以使您的应用更好地使用,但您不应该依赖它来保护您免受恶意上传。
【讨论】: