使用ASP.NET身份和IDataProtection保护敏感数据

时间:2019-10-16 11:16:36

标签: c# asp.net-identity asp.net-core-webapi user-data

这是第一次在这里写东西,所以如果我输错了,对不起。我尚未完全了解规则。

我正在使用带有Identity和EF Core的Asp.net Core 2.1 WebApi进行作业。

我一直在寻找一种使用以下方法加密和解密用户敏感数据的方法 IDataProtection和Identity,但是我无法加密电子邮件等数据,因为它可以验证电子邮件的格式是否正确。

任务的最初想法是使用上述工具对所有这些数据进行加密。

我使用了MSDN文档,但我不知道是否要加密某些东西(例如名字和姓氏)而忽略其他东西(例如电子邮件)。而且,如果您忽略某些字段,您为什么可以告诉老师为什么不对那些字段进行加密?

如果您对我的工作有建议,我将不胜感激。

祝您有美好的一天,并提前致谢。

1 个答案:

答案 0 :(得分:0)

不要“加密所有内容”。加密需要付出一定的代价。从本质上讲,它是缓慢且处理密集型的,因为这实际上是为您购买安全性的原因。本质上,您正在创建一个数学问题,它将使计算机花费很长时间才能合理解决。当然,在很多情况下都需要加密,但是由于这是一个折衷方案,因此仅应在特定情况下进行加密,例如高度敏感数据,例如密码,社会保险号,信用卡数字等。

诸如电子邮件地址,名字,姓氏等之类的情况并非如此。数据本身并不敏感,并且在许多情况下无论如何已经公开。例如,某人的名字和姓氏不是“秘密”;他们将这些信息公开告诉可能遇到的任何人。

但是,如果平常的信息 与其他与 私有的数据相关联,则它可能会变得敏感。例如,如果您有一个包含财务信息的数据集,例如薪水,债务/收入比等,则该数据不是必须是私人数据或敏感数据, 它带有某人的名字和姓氏,电子邮件地址等,因此成为非常私人和敏感。在那里,PII(个人身份信息)的概念开始起作用,并遵守欧盟的GDPR等法律。

尽管如此,尽管如此,单个数据也不需要加密。您必须简单地以敏感方式处理组合数据。换句话说,您需要确保对任何数据库的访问受到限制,仅通过安全通道(例如HTTPS等)传输数据。通常,只要数据受到保护,就不需要对每个数据进行加密。