我可能会问一个愚蠢的问题,但我想确定我的应用程序已经完成,我不想在将来遇到某些病毒问题
我有一个用angular2编写的应用程序和java中的后端。 人们可以更改他们的个人资料图片。
从我的前端我在base64中对图片进行编码并将其发送到我的休息api。
然后使用库net.iharder对base64进行解码,并在bytearray中对其进行转换 http://iharder.sourceforge.net/current/java/base64/
一旦完成,我通过创建带有
的BufferedImage来检查文件是否是图片(并调整大小)ImageIO.read(ByteArrayInputStream)
如果它与图像不对应则返回null所以我也没有看到这里的风险。
完成后,我将图片存储在我的服务器中。
任何查看带有图片的个人资料的个人资料都会收到一个base64编码的图像(对应于上传的图像),它将以基本的方式显示
<img src="myBase64"/>
仅允许JPG和PNG
我的问题是:如果一个人发送包含病毒的文件,我的服务器或最终用户是否有任何风险?或者使用ImageIO读卡器我是否安全。
提前致谢
答案 0 :(得分:1)
如果您存储发送给您的任何内容并将其保持不变,那么任何事情都可能发生。仅仅因为ImageIO可以读取图像,并不意味着那里没有妥协的东西。
但是,如果你调整图像大小并使用它,那么当你从原始图像字节创建一个全新的图像时,几乎没有任何幸存的机会。 JPG和(我猜)PNG文件可以包含不属于图像的元数据,这些元数据可能是漏洞利用的向量。但是,通过从原始图像数据创建新图像,您可以隐式地删除所有这些。