通过任何地址的电子邮件接受图像文件.

Qui*_*Par 8 security email file transfer

我正在尝试构建一个服务,任何人都可以从电子邮件地址/客户端发送图像文件并进行处理.想想服务有点像Flickr在通过电子邮件发送的仪表板中显示图像

从可用性的角度来看,这种机制提供了很多优势,但我想了解这种行为安全后果.一些问题是:

  • 我需要将所有这些文件验证为图像
  • 人们可能会发送一个文件,其中包含可能存在问题的漏洞/代码.但在我的情况下,我主要打开一个文件并保存,让浏览器显示图像

我在这里采取正确的方法吗?我应该有严重的后果吗?

Not*_*tMe 7

你应该做的事情并加以考虑.

  1. 确保您的邮件服务器配置为进行病毒扫描,并使其保持最新.那将是第一道防线.

  2. 当电子邮件进入时,尝试在已知的坚如磐石的库中处理图像.

  3. 请注意,许多电子邮件包含多个图像,其中一些图像可能与它们发送的图像没有任何关系.例如,我们公司的电子邮件都包含底部的徽标.我不确定这里的解决方案是什么,但你会想要考虑它.

  4. 不同的电子邮件客户端处理图像附件,不同.有时它是一种正常的附着物,有时它嵌入体内.即使在同一客户端内,图像的处理方式也可能不同,具体取决于他们是否将电子邮件作为带有附件或HTML邮件的plaint文本发送.

  5. 人们会测试你的系统.他们会发送.js文件,他们会发送标题被插入的图像,以便溢出图像处理库...

  6. 请考虑强制执行某些电子邮件限制,例如SPF检查.

  7. 准备接收绝对巨大的图像.今天的相机拍摄非常大的照片,很多人不知道什么作物或调整大小意味着什么.您可以考虑为每台进入服务器的电子邮件设置15MB或更大的上限.然后,与上面的#2结合使用,可以将图像自动调整大小,使其更加可接受.

  8. 确定您实际想要用于通知用户任何问题的机制.请记住,这种机制可能会被滥用.例如,考虑发送到您的计算机的垃圾邮件,其中回复标题将发送给受害者.

如果您使用的是.net,请参阅此方法以确认文件是否为图像:如何确定文件是否为.NET中的图像文件?

  • 这是惊人的建议! (3认同)

Ira*_*lis 6

我不是说这是100%安全的(你可以100%安全吗?)但是你可以试试这里:

假设您在postfix(或任何邮件系统)上有一个别名,它将传入的电子邮件重定向到php/bash/python脚本以进行进一步处理.

我要做的第一件事是使用图像处理库(比如imagemagick)并将所有传入的文件转换为.png格式或其他任何内容,并且只有在转换成功时才继续使用您的逻辑.

这样,如果有人向您发送任何恶意附件(php exploit,jar's,swf's,any),转换将失败,因此您的系统将忽略它.

编辑:ImageMagick具有"识别"命令,它完全符合您的要求.