2017-03-15 79 views
0

我有一个CakePHP应用程序,允许用户上传图像。我目前正在使用版本2.Cakephp图像安全

我担心黑客可能会在图像中嵌入代码,然后代码将在服务器上执行。

有谁知道如果使用CakePHP文档中使用的图像验证方法包含安全检查吗?

这是一个链接,可以更好地提出我所问的问题。 PHP image upload security check list

在此先感谢

回答

0

您可能需要先正确地阐述你很关心,像这种情况,如何将代码嵌入在图像中的服务器上执行?那是什么样的代码?服务器/应用程序对这些图像做什么?无论文件内容如何,​​将它们移动到文件系统当然都不会做任何事情。

CakePHP没有提供任何验证功能来检查二进制图像数据的完整性/有效性。可能与图像相关的验证方法如Validation::mimeType()只能通过PHP finfo_*mime_content_type函数进行非常基本的文件头检查。

即使CakePHP验证图像数据结构,人们仍然可以通过元数据嵌入各种东西,例如,如果有人设法在正确的上下文中包含图像,可能会执行嵌入的代码。

正如先前提到的,首先评估威胁,然后确定适当的防御机制。如果您需要比CakePHP内置验证提供的更高的安全性,那么您可能需要处理图像和沟/过滤元数据。然而,即使是可以被利用,适当制作的PNG IDAT块例如甚至可能存活的过程像尺寸/重新采样:

https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/

+0

嗨, 首先,我会链接到感谢您抽出宝贵的时间特别是有这样一个详细的答复。至于什么代码在服务器上执行,我不确定,但我一直在网上阅读,我遇到一篇文章,提到PHP代码可以嵌入到图像的标题,一旦上传代码可以执行,虽然我不确定如果这是严格的PHP或者其他语言可以使用。 –

+0

我有一个表单,允许图像上传到我的服务器上第一次上传,他们被放置在tmp文件夹,然后使用PHP move_uploaded_file函数被移动到另一个位置。我有另一个应用程序也构建在PHP中,在网页上显示图像。 我的担心是,如果有人管理在标题中嵌入一些PHP代码,然后在显示图像时执行该代码。当谈到这种攻击时,我是一个初学者,并且赞赏正确的方向。 –

+0

@DavidSimpson除非存在任何特定的漏洞(例如在用于图像处理的库中),否则此类嵌入式代码通常只会在图像包含在PHP上下文中时执行(例如'include'image.jpg'' ,或者如果有人设法控制目标文件名,并且它是可公开访问的,即,如果它以'* .php'的形式存在的话)。如前所述,MIME类型检查,甚至图像类型检查(例如'getimagesize()')都可能被欺骗,所以如果需要更好的保护,则需要处理图像或查找可以执行适当图像数据的库验证。 – ndm