imdong
2020-10-19 10:24:32 +08:00
看来楼主是想做到滴水不漏的安全防护,但我建议做到一定程度即可,因为“边际效益”会越来越低。
历史上好像确实出现过操作系统的图片程序出现过一个 0day,特定构造的图片,其特殊的信息头可能导致任意代码执行,而这种情况不排除未来也会出现,这是你无法处理的,而且也不是你的责任,应该是用户端的安全防护,执行程序需要做的。
楼主尽可能做到保护好自己的服务器不被攻击即可,至于图片被下载到本地后是否会影响用户,这个不是你能考虑的问题了,至于直接把其他文件的文件扩展名改成图片格式的客户端是否会执行,参见前两天那个关于后缀的讨论。
说想防止被黑客利用分发二进制的,我再提供一个你绝对无法避免的问题,我把二进制文件的每一个字节转化为图片上的一个点,这个图片就是标准的图片,我客户端(下载器)读取图片后还原为程序再去执行,怎么办,无法避免,而且这种情况历史上就是出现过,Chrone 的某个扩展程序就爆出过这样的后门。
所以做到以下几点,就合格了,服务器不被任意代码执行,不会有注入之类的问题,防止被恶意流量攻击(似乎没有太好的办法),上传的文件基本符合文件特征就好了,因为相比于上传的恶意文件是否会被客户端执行,我更关注的是是否会被当做在线流媒体分发平台,比如把音频,视频当做图片上传,然后网页在线播放(改后缀,指定头,都不影响播放)