C 恶意文件上载

C 恶意文件上载,c,validation,image-processing,C,Validation,Image Processing,我正在开发一个在线应用程序,它也允许上传图像文件。处理上传的服务器是用C写的,所以我在想是否有可能上传恶意内容。我说的是病毒或恶意代码之类的东西。我只允许上传图像,这样我就可以检查MIME类型和文件后缀。但我不确定这是否足够。上传的图片将通过HTML标签自动传送 我知道在过去,图像被用来引发缓冲区溢出和其他不愉快的事情。但也许这不是我检查的责任,而是在浏览器的末尾不允许图像处理暴露漏洞 简而言之:当提供依赖于用户提供的图像的服务时,我可以做些什么来防止我的服务器成为恶意软件的分发中心?关于这一问

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

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

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


编辑:我可能不知道文件上传部分的具体操作模式。它是
nxweb
的一个模块,是一个用
C
编写的服务器。因此,我正在寻找验证该模块中文件的方法。

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

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


只测试图像很好,但是如果您想测试可执行文件以获得更精确的结果,请查找(Windows)、Linux、(Mac OS X)等等。。。它们不难解析。这方面有很多开源软件。

这是一个很好的问题——但可能超出了Stackoverflow的范围,因为您没有为代码本身提供服务。如果您通过HTML提供图像,客户端——您的观众的web浏览器——提供了可利用的漏洞。你是打算在上传图像后进行验证,还是只是将其传递给他人?这几乎是我的问题。我必须添加验证吗?如果需要并且可行的话,我会这样做。我不认为这个问题属于
服务器故障
,因为我特别要求通过
C
库或类似性质的东西来检查上传文件的安全性。我不认为这个问题应该作为离题来结束,因为下面的答案是一个非常好的答案这直接涉及到编程。谢谢你的建议!这样做安全吗?我的意思是,您所建议的库中是否存在任何已知的弱点,这会使我的服务器处于危险之中?我知道这在“信任”的方向上变得越来越哲学化,我只是想在决定如何继续之前尽可能多地投入?嗯。。。当然,有时它可能会出现安全故障,但当它发生时,每个人都会得到警告!他们都是活跃的项目,开源的,所以当有人找到一个时,bug会很快被解决。。。您可以选择:您可以编辑它们,也可以自己解析图像文件