如何保护保存用户登录以进行长期访问



我创建了一个PHP/MySQL应用程序,该应用程序将用于使用用户名和密码登录用户,但是即使关闭浏览器或重新启动设备,我也需要用户登录到系统才能生存。

出于这个原因,我不能依赖PHP会话。

当然,我可以使用浏览器 Cookie,但我害怕被盗。

我尝试将生成的哈希存储在 cookie 中,并将登录信息存储在数据库中。不幸的是,这是一个潜在的cookie被盗的大问题。

我还针对浏览器版本和用户 IP 地址测试了此哈希的安全性。不幸的是,该应用程序的用户将主要使用手机(IP地址会经常更改(,仅针对浏览器版本的哈希验证对我来说似乎并不安全。

有没有办法使用 HTML/PHP/MySQL/...?

你可以用抽象的术语来思考这个问题:你想根据一些数据识别用户。有两种方法可以执行此操作:

  1. 您可以向用户提供一些(秘密(数据,然后他们可以稍后向您展示
  2. 您可以收集一些用户独有的数据

Cookie 是 1. 的一个例子。 - 但如果你在 JavaScript 中使用 cookie 或其他一些东西(如本地存储(并不重要。您正在做的是为浏览器提供值并存储它。所有方法都具有相同的风险:值可能在传输过程中被盗(不使用 SSL 时(,或者可能在存储中被盗。

对于方法2,有些事情就像使用用户的IP地址或他们"意外"生成的其他数据一样。然而,这些并不可靠,你经常在权衡或 1 的组合。和 2.

例如,您可以设置 Cookie,但在服务器端验证 IP 地址是否相同。这为您提供了一点额外的安全性,但是用户现在无法在手机上使用该应用程序,因为每次切换WiFi/移动网络时,他们都会被踢掉。

如果您想拥有更安全的东西,您可以使用存储在 HSM 上的 SSL 客户端证书。但这又是一种权衡,因为它的设置变得越来越复杂,您必须分发和管理硬件。

这些方法都无助于对抗受感染的客户端 - 即如果用户的计算机上有特洛伊木马或其他恶意软件。

最新更新