我正在构建一个允许用户上传音频文件的网络应用。
鉴于今天的bitcointalk正在下降以及猜测它可能已经被攻击者上传伪装成头像图像的恶意代码所破坏,那么在服务器上检查上传文件以确保它的最佳方法是什么实际上是一个有效的音频文件?是否有我应该使用的库或PHP内置的函数?
答案 0 :(得分:4)
它是否是有效的音频文件并不重要。您可以制作有效解释为两种文件类型的“变色龙”文件。
上传的文件应该:
使用非来自用户输入的文件名存储在文件系统上,在该目录中,Web服务器设置为仅提供静态文件而不执行代码。 (避免一系列代码注入和目录遍历攻击;听起来像bitcointalk的问题,如果他们在头像目录中有.php文件。)
仅从与主站点不同的主机名(最好是不同的域名)提供服务。 (在上传的内容中排除跨站点脚本攻击,因为对一次性上传域名的攻击没有任何好处。)
验证文件内容是您可能想要做的事情,以使您的应用程序易于使用,但您不应该依赖它来保护您免受恶意上传。