我正在尝试构建一个服务,任何人都可以从电子邮件地址/客户端发送图像文件并进行处理。想想服务有点像 Flickr 在通过电子邮件发送的仪表板中显示图像
从可用性的角度来看,这种机制提供了很多优势,但我想了解这种行为的安全后果。有些问题是:
我在这里采取了正确的方法吗?是否会产生严重后果?
答案 0 :(得分:7)
你应该做的事情并加以考虑。
确保您的邮件服务器已配置为进行病毒扫描,并使其保持最新。那将是第一道防线。
当电子邮件进入时,尝试在已知的坚如磐石的库中处理图像。
请注意,许多电子邮件包含多个图片,其中一些图片可能与他们发送的图片完全无关。例如,我们公司的电子邮件都包含底部的徽标。我不确定这里的解决方案是什么,但你会考虑到它。
不同的电子邮件客户端可以处理图像附件。有时它是一种正常的附着物,有时它嵌入体内。即使在同一客户端内,图像的处理方式也可能不同,具体取决于他们是否将电子邮件作为带有附件或HTML邮件的plaint文本发送。
人们会测试你的系统。他们会发送.js文件,他们会发送标题被插入的图像,以便溢出图像处理库......
请考虑强制执行某些电子邮件限制,例如SPF checks。
准备接收绝对巨大的图像。今天的相机拍摄非常大的照片,很多人不知道什么作物或调整大小意味着什么。您可以考虑为每台进入服务器的电子邮件设置15MB或更大的上限。然后,结合上面的#2,自动调整图像大小,使其更容易接受。
确定您实际想要用于通知用户任何问题的机制。请记住,这种机制可能会被滥用。例如,考虑发送到您的计算机的垃圾邮件,其中回复标题将发送给受害者。
如果您使用的是.net,请参阅此方法以确认文件是图片的可能方式:How can I determine if a file is an image file in .NET?
答案 1 :(得分:6)
我不是说这是100%安全的(你能100%安全吗?)但是你可以试试这里:
假设您在postfix(或任何邮件系统)上有一个别名,它将传入的电子邮件重定向到php / bash / python脚本以进行进一步处理。
我要做的第一件事是使用图像处理库(比如imagemagick)并将所有传入的文件转换为.png格式或其他任何内容,并且只有在转换成功时才继续使用您的逻辑。
这样,如果有人向您发送任何恶意附件(php exploit,jar's,swf's,any),转换将失败,因此您的系统将忽略它。
编辑:ImageMagick具有“识别”命令,可以完全按照您的要求执行操作。
答案 2 :(得分:3)
电子邮件也很容易spoofed
,这意味着我可以通过不属于我的电子邮件地址发送电子邮件。
这可能也会有所帮助:Secure way to upload image in PHP ...