文件上传对用户的工作效率以及许多业务服务和应用程序都至关重要。例如,文件上传是内容管理系统、医疗保健门户网站、保险网站和消息应用程序的重要功能。随着企业向远程和远距离工作空间迁移,采取措施确保文件上传的安全性变得越来越重要,因为文件上传不受限制会为恶意行为者提供攻击载体。
文件上传有哪些风险?
允许在网站上上传文件有三种风险:
1.对基础设施的攻击:
- 覆盖现有文件 - 如果上传的文件与服务器上现有文件的名称和扩展名相同,则可能会覆盖现有文件。如果被覆盖的文件是关键文件(如替换 htaccess 文件),新文件有可能被用于发起服务器端攻击。这可能导致网站无法继续运行,也可能破坏安全设置,允许攻击者上传更多恶意文件,并向您索取赎金。
- 恶意内容--如果上传的文件包含利用服务器端文件处理漏洞的漏洞或恶意软件,该文件就可能被用来控制服务器,造成严重的业务后果和声誉损失。
2.对用户的攻击:
- 恶意内容 - 如果上传的文件包含漏洞利用程序、恶意软件、恶意脚本或宏,则该文件可用于控制受感染用户的机器。
3.服务中断:
- 如果上传的是超大文件,可能会导致服务器资源消耗过大,从而中断为用户提供的服务。
如何防止文件上传攻击
为避免这类文件上传攻击,我们推荐以下十种最佳做法:
1.只允许特定文件类型。通过限制允许的文件类型列表,可以避免可执行文件、脚本和其他潜在恶意内容上传到应用程序。
2.验证文件类型。除了限制文件类型外,确保没有文件 "掩盖 "为允许的文件类型也很重要。例如,如果攻击者将 .exe 重命名为 .docx,而您的解决方案完全依赖于文件扩展名,那么它就会作为 Word 文档绕过您的检查,而事实上它并不是。因此,在允许上传文件之前,验证文件类型非常重要。
3.扫描恶意软件。为最大限度地降低风险,应对所有文件进行恶意软件扫描。我们建议使用多个反恶意软件引擎(结合使用签名、启发式和机器学习检测方法)对文件进行多重扫描,以获得最高的检测率和最短的恶意软件爆发时间。
4.删除可能的嵌入式威胁。Microsoft Office、PDF 和图像文件等文件可能会在隐藏脚本和宏中嵌入威胁,而反恶意软件引擎并非总能检测到这些威胁。要消除风险并确保文件不包含隐藏威胁,最好的做法是使用一种称为内容解除和重建(CDR)的方法来删除任何可能的嵌入对象。
5.验证用户身份。为提高安全性,要求用户在上传文件前进行身份验证是一种很好的做法。但是,这并不能保证用户的机器本身没有被入侵。
6.设置最大名称长度和最大文件大小。确保设置最大名称长度(尽可能限制允许的字符)和文件大小,以防止潜在的服务中断。
7.随机更改上传的文件名。随机更改上传的文件名,这样攻击者就无法用他们上传的文件名尝试访问文件。使用Deep CDR 时,可将消毒文件配置为随机标识符(如分析数据_id)。
8.将上传的文件存储在网站根目录之外。 上传文件的目录应在网站公共目录之外,这样攻击者就无法通过指定路径 URL 执行文件。
9.检查文件中的漏洞。确保在上传软件和固件文件前检查文件是否存在漏洞。
10.使用简单的错误信息。 在显示文件上传错误时,不要包含目录路径、服务器配置设置或其他攻击者可能用来进一步进入系统的信息。
文件上传安全OPSWAT
OPSWAT 提供多种文件上传安全解决方案,包括MetaDefender ,这是一个先进的威胁防御平台,可通过多种反恶意软件引擎、内容解除和重建 (Deep CDR) 以及漏洞评估来帮助防止恶意文件上传攻击。 MetaDefender可通过 API或任何支持ICAP 的网络设备(如网络应用防火墙、负载平衡器和应用交付控制器)进行部署。
想进一步了解如何阻止恶意文件上传?请阅读我们的白皮书:如何使用OPSWAT API 阻止恶意文件上传。