【发布时间】:2021-05-02 12:40:44
【问题描述】:
假设我们有一个要求,用户上传到我们的 ASP.NET Core MVC 应用程序的每个文件都必须以加密形式存储在共享文件夹中,并且这些文件必须保留到用户删除它们(因此可能会很长时间)。共享文件夹部分并不难,但加密上传文件的“正确”方法是什么?当用户上传文件时,我们得到的是一个带有原始文件名的字符串和一个带有文件内容的流,所以这是起点,但我不知道如何从那里开始。
有很多 Google 结果,但所有这些结果都直接在流上使用原语,我猜这样做时会有一些明显的安全漏洞,因此必须有适当的方法来做到这一点。
【问题讨论】:
-
"所以必须有适当的方法来做到这一点。"那没有。我很抱歉这是真的。有很多正确的方法可以做到这一点,但是没有标准化和广泛使用的解决方案(有标准化的解决方案,但它们没有被广泛使用并且通常很复杂且文档不足,并且有广泛使用的解决方案,但大多数正如你所怀疑的那样是错误的)。答案将取决于您的具体情况。我希望有一个比“聘请安全专家来设计它,或者学习密码学的具体细节”更好的答案。
-
相关部分将是您的攻击配置文件是什么,您计划如何管理密钥,以及最重要的是此要求是否与合规性有关(“只要我们可以说它是加密的,我们就是快乐”)或实际上是关于安全性。如果是后者,那么你真的必须知道你要防御什么样的攻击。对常见问题应该有很好的现成答案,但在很多情况下没有。
-
如果它不必是网络共享,启用文件流且启用了加密的数据库(如 SQL Server Enterprise)可能是合适的。但是,听听罗。如果您正在寻找像 CJIS 这样的东西,那么要求的范围不仅仅是加密。
标签: asp.net-core encryption asp.net-core-mvc file-handling