在我的java Web应用程序中,当管理员添加用户时,我的系统会生成一个长度为12的随机字母数字字符串激活密钥。
此密钥分为两部分,每部分长度为6.激活密钥的一部分通过用户手机短信发送,第二部分通过电子邮件发送到用户的电子邮件ID。
有人告诉我,短信和电子邮件很容易被黑客攻击,所以如果你通过短信和电子邮件发送激活密钥,黑客就可以轻松找回它。
我该怎么做才能解决这个问题?
短信和电子邮件是否安全?
我可以使用任何第三方安全性吗?
其他网站如何发送电子邮件和短信?
目前,我的系统使用Way2SMS-API发送短信,并使用Gmail发送电子邮件。
答案 0 :(得分:3)
电子邮件很容易(相对)破解,因为邮件是普通的,可以通过许多未知的服务器进行路由。
短信更难,但并非不可能。
然而,短信和电子邮件的组合以及到期时间(即必须在24小时内完成登录)应该被认为足够安全,用于大多数目的。
答案 1 :(得分:2)
解决此问题的一种简单方法是要求在Web应用程序中的原始HttpSession仍处于活动状态时输入安全令牌。因此,即使黑客拦截了您的消息,他也无法使用它,因为会话由用户拥有(例如,生成的令牌存储在会话属性中,因此您可以在用户在Web UI上输入时对它们进行比较)。然后拦截这个的唯一方法是使用“中间人攻击”,但可以通过使用https来击败。
另一种方法是向用户显示密钥的一部分,因此他必须将其与他将在电子邮件中收到的部分一起重新输入。因此,即使黑客窃取了该电子邮件,他也无法知道在生成电子邮件时向用户显示的内容。
答案 2 :(得分:1)
好吧,您可以使用Md5
并通过短信发送一半,然后通过电子邮件发送一半,然后根据记录的密码的哈希值检查它,如果正确,则允许他们注册,否则,不要让他们注册。但是,这假设只有两个(电子邮件/ SMS)中的一个被黑客入侵。否则,如果他们同时获得它将失败目的。
@Eugine这是一个好主意大声笑我没想到那一个。 ^。^