1

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

我知道过去图像被用来引发缓冲区溢出和其他不愉快的事情。但也许这不是我检查的责任,而是在浏览器的末端不允许图像处理暴露漏洞?

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

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

4

1 回答 1

2

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

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

仅测试图像就可以了,但是如果您想测试可执行文件以获得更精确的结果,请寻找PE 格式(Windows)、Linux ELFMach-O (Mac OS X) 等等……它们并不难解析。有很多开源的。

于 2013-10-14T18:16:59.877 回答