我正在尝试使用SMS作为第二个auth方法设计一个双因素身份验证系统(在PHP上).这是一个测试项目,因此任何人都可以帮我设计这项服务吗?
这将是一个基于网络的系统,下面是我迄今为止所做的.
一旦客户输入用户名和密码,网站将通过MSISDN,UID(识别会话),用户ID和密码发送安全HTTP请求到我们的服务器.
我们的服务器会将请求添加到MySQL数据库,并使用代码,UID和其他一些信息回复网站.
我们的服务器将使用一次性密码向客户端发送短信.
一旦客户端将OTP输入网站,网站将向我们的服务器发送带有加密OTP的另一个HTTPS请求,我们将发送成功或失败代码作为响应.
这是我想到的流程.谁有更好的流量?还是建议?
谢谢.
这可能工作正常,但它不是双因素身份验证.
除了密码,第二个因素可以是:
因为我假设你不是针对生物识别技术;),让我澄清为什么我说这不是第二因素(你有的东西).
为了获得第二个因素,您需要保证设备的持有者(即预先注册的手机)是唯一可能收到SMS的人.
在今天的蜂窝网络中,仅仅是这样.有黑客可以复制例如SIM卡; 蜂窝运营商可以拦截; 智能手机可以有拦截和重发的应用程序; 等等.
此外,具有用户输入代码回到该网站允许所有的额外的密码标准的网络攻击:嗅探,拦截,MITM,会话劫持等..
现在,要明确,这仍然有价值 - 带外通信可以帮助确保明显的用户不会受到简单的网络攻击,XSS等的伤害.
我已经与很多喜欢这个解决方案的电信公司合作过(它也恰好是他们商业模式的一部分,但无论如何;))
但是,根据您的情况,某些地方(例如银行,政府)需要真正的第二个因素 - 即加密证明(通常).这不是它.
似乎是一个有效的机制。但如果短信设备不在服务区怎么办?或者电池没电了?