【发布时间】:2015-06-09 19:40:40
【问题描述】:
我编写了一个需要登录的 PHP 应用程序。此应用程序是私有的,因此没有新用户可以注册。首先,我使用会话来识别用户,但这会导致平板电脑出现问题,因为他们丢失了会话。我认为这是因为节能操作。
现在我更改了我的应用程序以生成随机安全令牌。所以认证如下:
- 登录
- 生成随机安全令牌并将其保存到磁盘
- 将浏览器重定向到http://myhost/site?id=[securitytoken]
- 在服务器端,我检查文件是否存在 - 如果存在,则用户已通过身份验证
现在一切正常我只是在考虑安全问题。如果用户看到安全令牌,则没有问题。当我使用 GET 时,是否有可能找出令牌?我正在使用 SSL。
我尝试更改过期时间和 cookie 生命周期。在普通计算机上,它可以正常工作。在桌子上它也在工作如果它不会进入待机状态(意味着屏幕变黑)。如果屏幕变黑,会话很快就会过期。
【问题讨论】:
-
搜索“会话固定”,这可能是您的方法的问题。如果您的安全令牌实际上是一个 SID,(会话 ID),那么它有它的缺点。就像我可以检查您的浏览器历史记录一样,我会看到它,或者如果有人打印了一个页面并且 url 打印在页面的顶部。小问题,但我认为通常会引起您的注意。
-
@RamyDeeb 他们在 SSL 上。怎么会被嗅到?
-
如果您无法使用 cookie 来存储 PHPSID,请尝试使用 JavaScript 中的
window.localStorage。结合客户端公钥身份验证 (travist/jsencrypt),它应该非常防弹。 -
@RamyDeeb 在security.stackexchange.com/questions/19616/… 上看到这篇文章 - 然而,这篇文章让我有点不寒而栗 blog.philippheckel.com/2013/07/01/…
-
@Fred-ii- 一切都与信任有关。如果没有私钥并且客户端根据(受信任的)公钥进行验证,MITM 是不可能的。对于普通人来说,未加密/http流量的MITM是困难的(只有W-LAN,比较容易破解)。带有加密 / https 流量的 MITM,对于 普通 人来说是非常非常困难的,几乎是不可能的。 MITM 需要欺骗 ARP 表、WLAN 访问或访问客户端和 Internet 之间的任何设备。