我们正在我们所有站点上进行安全更新,其中涉及的两个步骤是在传输时加密数据并对静态数据进行加密。我们是否应该加密存储在aspnet_Profile表中的数据
添加SSL证书将在传输时加密数据,我们需要加密数据库中的所有数据,这些数据被分类为用户的个人信息。
其中一些细节存储在aspnet_profile表中。
任何人都可以请建议关于加密存储在这个表中的数据? 我们是否真的需要加密数据以作为安全更新的一部分?
我们正在我们所有站点上进行安全更新,其中涉及的两个步骤是在传输时加密数据并对静态数据进行加密。我们是否应该加密存储在aspnet_Profile表中的数据
添加SSL证书将在传输时加密数据,我们需要加密数据库中的所有数据,这些数据被分类为用户的个人信息。
其中一些细节存储在aspnet_profile表中。
任何人都可以请建议关于加密存储在这个表中的数据? 我们是否真的需要加密数据以作为安全更新的一部分?
这取决于。您希望能够访问用户的信息,还是用户是唯一有权访问数据的人?
第一次,我认为只有当数据库存储在与Web服务器分开的服务器中,或者解密密钥存储在单独的服务器中时,数据的加密才有意义。为了解密数据并将其呈现给用户,您需要对其进行解密。如果加密数据和密钥位于同一台服务器中,并且该服务器遭到入侵,则攻击者将能够解密所有内容,因为他们也可以访问密钥。如果您将它们分开存储,则需要折中2台(或更多台)服务器,这可能会更困难。另外,由于加密是一项繁重的任务,因此您应该只加密敏感数据(无论您认为对您的方案敏感)。像密码这样的数据不应该被加密,而是散列和腌制(有关如何做到这一点的网上有很多信息)。如果您决定对所有内容进行加密,那么您应该为每个用户使用不同的密钥,这样如果一个密钥被攻破,只有一个用户会受到影响。如果您只想让用户查看存储的信息,则应该知道无法访问它(除非您将其存储在单独的数据库中,而无需加密,或使用您自己的密钥加密)。如果您没有使用您自己的密钥备份信息(或以纯文本存储 - 无法达到目的),丢失密码的用户将遇到麻烦。即使您拥有数据副本,但恢复数据将意味着使用密钥(如果未以明文存储)对其进行解密,并使用用户设置的新密钥再次对其进行加密。如果数据量很大,这可能是一项繁重的任务。最后,如果您只希望用户拥有访问权限并承担全部责任(因此您将无法访问它,但所有内容均为),您应该明确,并且最好在客户端执行加密。同样,只有敏感数据才能被更好地加密。此外,用户登录的用户名和密码等信息不应加密。在这种情况下,同样的腌制散列原理也适用于密码。
在这两种情况下,您都应该记住,丢失密钥意味着可能会丢失全部的数据!您还应该使用一些很好的加密方案,如AES CFB模式。
总体而言,这是否是一个好主意,实际上取决于数据和预算的敏感性。需要定期备份,并小心处理,避免丢失密钥。额外的服务器也可能是必需的,如果网站的流量很大,可能需要强大的服务器才能处理这个繁重的任务。