将数据存储在 BLOB 中而不是文件系统中的安全/恶意软件影响

信息安全 恶意软件 数据库
2021-08-31 03:30:14

从编程的角度来看,关于将文件存储在数据库中的 BLOB 或二进制字段中,还是在文件系统中,长期以来一直存在争议。辩论似乎总是围绕着表现。

我一直想知道受感染文件保存在数据库中的风险。假设我允许内部用户将我们公司网站上可用的文档上传给我们的外部客户。例如,我真的不想让我们的网站向我们的客户提供受感染的 PDF 文档。

除了合并要求我们的内容编辑器在上传文件之前扫描文件的政策之外,是否有任何类型的保护可以实施来检测受感染的文档?我无法想象防病毒软件可以在 BLOB 字段中进行扫描(但我可能错了)。

对我来说,这似乎更有风险。如果我们让它们上传到文件系统,至少可以让杀毒软件扫描上传位置。

这是一个有效的担忧吗?如果是这样,建议使用哪些工具或方法来应对这种潜在威胁?

3个回答

之前已在此站点上详细回答了此问题。请参阅以下问题:

关于数据库和文件格式的问题的答案是:如何存储文件并不重要。无论上传的文件是存储为 BLOB、二进制字段、文件系统还是其他方式,风险都是相同的。这只是一个实现细节。

重要的是您进行了何种验证,以及您如何应对威胁。无论您决定如何存储上传的文件,任何标准缓解措施都可以发挥作用——重要的是您了解风险并选择适合您的应用程序的缓解措施。

对于有关网络安全的一般建议,OWASP 始终是一个很好的资源。

将文件存储在数据库中或将其存储为文件都可以以安全或不安全的方式完成。还有一些数据库旨在存储文件,例如 Amazon S3 和 Google Blobstore。即使它存储为 BLOB 数据类型,数据库也将所有内容存储在文件系统上的文件中。

总是存在安全问题,这些方法之间几乎没有区别。它更多地是关于构建一个解决威胁的应用程序。

取决于数据库平台。使用 Oracle,您可以将“数据库”挂载为文件系统(至少在 Linux 中)。因此,您还有更多用于存储/扫描文件的选项。

http://docs.oracle.com/cd/E14072_01/appdev.112/e10645/adlob_fs.htm

基本上数据库和文件系统都只是数据存储机制。