恶意文件上传

时间:2013-10-14 17:50:27

标签: c validation image-processing

我正在开发一个在线应用程序,它也允许上传图像文件。处理上传的服务器是用C语言编写的。所以我在想是否可以上传恶意内容。我说的是病毒或恶意代码等。我只允许上传图像,所以我可以检查MIME类型和文件后缀。但我不确定这是否足够。上传的图片将通过HTML <img>标记自动投放。

我知道过去的图像已被用来引发缓冲区溢出和其他令人不快的东西。但也许我不负责检查,而是在浏览器的末尾不允许图像处理暴露漏洞?

简而言之:在提供依赖于用户提供的图像的服务时,如何防止我的服务器成为恶意软件的分发中心?关于这个问题的最佳做法是什么?我会继续通过某种算法或某个库检查上传的文件吗?这会打开我的漏洞吗?这是我的顾虑吗?

编辑:我可能没有具体说明文件上传部分的操作模式。它是nxweb的一个模块,一个用C编写的服务器和模块一样。所以我正在寻找验证该模块中文件的方法。

1 个答案:

答案 0 :(得分:2)

只测试你的文件:图像(确认它们是图像)和可执行文件(丢弃它们)。

为了测试图像,您可以尝试使用ImageMagick或OpenCV或FFmpeg或类似的库打开它,这些库允许您打开几种不同的格式!如果文件无法作为图像打开,则它不是图像!

仅测试图像就好了,但如果您想测试可执行文件以获得更高精度的结果,请查找PE format(Windows),Linux ELFMach-O(Mac OS) X)等......他们不难解析。这有很多开源。