我通过向他发送带有他的登录名/密码的直接链接来对用户进行一些身份验证,以便他能够按下它并通过 URL 中的 GET 参数登录。
例如:
http://example.com/index.php?r=site/login&p=password&email=igor.savinkin%40gexample.com
我的问题是关于安全问题。如果有人将网络嗅探器与互联网线路并行放置,从而复制凭据或获取缓存数据怎么办? 我用的是Yii框架,所以安全维护还是不错的;登录最初是通过 POST 参数完成的。 我听说过 POST 与 GET 请求:
- 在处理敏感数据时使用 POST。
- 使用 GET 进行安全操作,使用 POST 进行不安全操作。
最佳答案
不要在 url 中使用密码!
这真的很糟糕,任何嗅探(或监控)流量的人都可以获得密码。另外,任何有权访问电子邮件收件箱的人都会知道密码。
另一种方法是使用仅有效一次的 token 。在发送邮件之前,您会生成一个与用户电子邮件地址相关联的唯一 token 。
你会有这样一个 url
http://hostname.com/index.php?r=site/login&token=544a0a62e280e3.83969641&email=igor.savinkin%40gmail.com
当用户使用你的url时
- 检查提供的 token 是否与您数据库中的 givn 地址相关联
- 丢弃 token 以确保没有人会使用相同的 url 登录。
最好是不提供任何使用给定 url 登录的方法。因为我假设您将通过电子邮件发送链接,而 SMTP 协议(protocol)并不安全。
关于php - 将身份验证凭据作为 GET 参数发送时的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26543879/