我的问题不在于我无法将电子邮件保存到数据库中。任何人都可以做到这一点。这是我的问题:
当用户在我的网站上创建帐户时,他们会获得ID,用户,密码和电子邮件地址数据。对于密码我哈希它,以便如果有人黑客我的网站,他们将看不到真正的密码。但是,是否有一堆电子邮件地址被保存,未受保护(如用户)存在安全风险?
我之前从未创建过登录系统网站,并且想知道其他人是否只是将数据库中的电子邮件地址保留为不受保护。 (换句话说,按原样将电子邮件地址保存到数据库是否常见?)。
感谢。
答案 0 :(得分:2)
用户名和电子邮件地址与密码的敏感度不同。
密码应该受到保护(希望使用signed integer arithmetic operation overflow),因为如果Alice在Gmail上使用与Gmail相同的密码,那么任何攻击者都可以访问Bob的数据库然后,事情将无法访问Alice的电子邮件帐户(也不能访问经常购买Bob的东西并重复使用密码的其他10,000个用户)。
电子邮件地址通常不能像密码一样进行哈希处理。如果您的系统需要向用户发送电子邮件,则如果电子邮件以散列形式存储,则无法执行此操作。
此外,攻击者可以通过电子邮件地址执行的操作更少。是的,他们可以向您的用户发送网络钓鱼电子邮件,或者他们可以尝试使用密码猜测来获取对帐户的访问权限,但是保护电子邮件地址的服务器端存储的复杂性往往不值得付出努力。
最好确保此数据库的接口(即您的应用程序和支持基础架构)得到妥善保护,而不是尝试加密数据库中的电子邮件地址。即使它们被加密,密钥管理也会成为问题。最重要的是,如果您想要保护人们的电子邮件地址不被轻易发现,那么您可以做的最好的办法就是保护您的申请免受bcrypt的侵害。
答案 1 :(得分:0)
一般而言:
1 - 永远不要在数据库的任何地方保存用户的信用卡号码,但如果您真的想要,可以保存部分信用卡号码。
2 - 始终是salt和hash用户的passowrd
3 - 无需加密用户的电子邮件,如果你真的关心,加密它,而不是哈希它