处理上传的动画 gif 以确保安全
Process uploaded animated gif for security
我们正在开发一个允许动画 GIF 上传的网站。为了确保图像确实是图像并且没有 malware/virus/backdoor/trojan 或图像数据本身以外的任何其他内容,我们尝试重新创建原始图像。
但是,当里面有很多帧时,这个过程本身会花费一些时间。有没有其他方法可以确保上传的动画 GIF 文件不存在上述问题?
您永远无法 100% 保证文件不包含恶意软件 - 即使采用您的方法,gif 也有可能包含一些可能是恶意的代码 simply by opening the image in a vulnerable viewer。
也就是说,这种可能性很低,您可以预期在大多数现代操作系统中,这类错误会很快得到修补。
您可以对上传的文件进行各种检查,但处理时间会更少:
- 检查文件扩展名是否符合您的预期 - 在上传阶段忽略
content-type
,因为它可能被欺骗。
- 病毒使用具有最新定义的病毒扫描程序扫描所有上传的文件。
- 不要将文件存储在可以执行它们的位置 - 例如不要存储在网络根目录中 (
www.example.com/uploads/image.aspx
)。
- 通过从存储中读取文件的程序或脚本提供文件作为数据,然后将输出流式传输到浏览器。
提供文件时,请确保 content-type
正确,如果可能,请正确设置文件扩展名。使用 Content-Disposition
设置浏览器将使用的名称:
Content-Disposition: attachment; filename="fname.ext"
我们正在开发一个允许动画 GIF 上传的网站。为了确保图像确实是图像并且没有 malware/virus/backdoor/trojan 或图像数据本身以外的任何其他内容,我们尝试重新创建原始图像。
但是,当里面有很多帧时,这个过程本身会花费一些时间。有没有其他方法可以确保上传的动画 GIF 文件不存在上述问题?
您永远无法 100% 保证文件不包含恶意软件 - 即使采用您的方法,gif 也有可能包含一些可能是恶意的代码 simply by opening the image in a vulnerable viewer。
也就是说,这种可能性很低,您可以预期在大多数现代操作系统中,这类错误会很快得到修补。
您可以对上传的文件进行各种检查,但处理时间会更少:
- 检查文件扩展名是否符合您的预期 - 在上传阶段忽略
content-type
,因为它可能被欺骗。 - 病毒使用具有最新定义的病毒扫描程序扫描所有上传的文件。
- 不要将文件存储在可以执行它们的位置 - 例如不要存储在网络根目录中 (
www.example.com/uploads/image.aspx
)。 - 通过从存储中读取文件的程序或脚本提供文件作为数据,然后将输出流式传输到浏览器。
提供文件时,请确保
content-type
正确,如果可能,请正确设置文件扩展名。使用Content-Disposition
设置浏览器将使用的名称:Content-Disposition: attachment; filename="fname.ext"