我只是想知道当我将用户联系信息存储在数据库中时是否应该加密它?
例如电子邮件、电话号码等...
通常您只加密敏感信息,这取决于您的项目要求。如果用户电子邮件或电话号码很敏感,请对其进行加密。另一方面,由于您需要从数据库中获取联系人信息,因此您将使用对称加密,并且很容易解密,因此您在这种情况下的“安全性”只是非法数据,并且不够强大。
无论如何,您应该始终对密码等敏感数据进行加密,我建议使用哈希进行非对称加密。
在我的项目中,我从不需要加密任何联系信息,只有密码在数据库中被加密。如果您正在实施 Web 应用程序,我建议您使用安全令牌(基于声明的安全性)并在网络上旅行时对所有联系信息进行加密(通过使用消息或传输安全性),因此泄露任何联系人的风险非常低信息给第三方。
我要解决更广泛的问题:我应该加密吗?
在我非常拙见的意见中,如果信息以任何方式与一个人的身份相关联并且可以公开访问您的网站或网络,那么答案是肯定的。我将忽略索引和搜索加密信息的技术复杂性,只给你以下思考:
This is a very simplified path, and lots of information is public record so in one sense protecting it is a moot point. However, if you are slapped with a lawsuit, and it DOES happen, that may be of little comfort when you're coughing up $500 a hour to your attorney.
仅当您希望自己的安全受到损害或知道不值得信任的人将直接访问您的数据库时,加密联系信息才有意义。
单向加密(散列)将使您的数据无用,因为无法检索它,因此您必须使用某种形式的可逆加密。
加密数据库中的联系信息有几个缺点,最明显的是:
请注意,可逆加密的弱点在于解密所需的密钥。不要将其存储在同一个数据库中。
使用传输层安全性(如 SSL)更有意义。