【问题标题】:What is the "proper" way to encrypt files in ASP.NET Core?在 ASP.NET Core 中加密文件的“正确”方法是什么?
【发布时间】: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


【解决方案1】:

“正确”是一个有趣的词。这实际上取决于您想要的安全程度以及您的意思。

如果您想确保文件通过网络加密,您需要考虑使用证书通过 TLS 保护您的应用程序。我假设您正在谈论在收到文件后对其进行加密,有很多方法,但是您实现它的方式确实取决于。一个更好的问题是谁可以访问这些文件,以及如何防止未经授权的用户访问其他人的文件。如果您让用户直接访问您服务器上的这些文件,您可能需要重新考虑您的方法,而不是尝试为每个用户单独加密每个文件。

This link might be helpful.

无论如何,一个选项是Symmetric Encryption。它不是最安全的,但实现起来很简单。需要密钥来加密和解密。您可以为每个用户使用一组密钥,但如果这些密钥被泄露,每个用户的文件都会被泄露。另一方面,您可以为每个用户使用单独的密钥集,但这更需要维护。最流行的对称加密算法之一是Advanced Encryption Standard (AES)。 .NET Core 有来自 Microsoft 的 libraries

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    相关资源
    最近更新 更多