我正在制作一个允许用户保持登录状态的 php 页面,并且我正在检查用户当前的 IP 与存储在 sql 表中的 IP。
我将用户 ID 存储在 cookie 中而不是 ip 中。
我还应该做哪些其他检查?因为我认为现在 IP 还不够。
它依赖于 cookie 使用户保持登录您的应用程序或网站。用户的 IP 可能会发生变化,因此无法获得此功能。它只是写cookie,然后在登录时读取它。
您可能希望将用户详细信息存储在会话中。Cookie 相对不安全,可用于提权。
散列会话 cookie 有利于保持用户登录。这是因为 cookie 保留在用户的计算机上,并允许它访问会话数据。散列它增加了一层安全性。
用户的 IP 地址不如 cookie 或会话变量好。一方面,它可以改变(就像智能手机从一个塔的范围移动到另一个塔一样)。另一方面,它可以被共享(就像在同一个无线路由器上的多个用户一样)。最后,IP 地址可以被欺骗。
另一方面,会话只会在浏览器打开时持续(取决于服务器端设置的会话超时)。在这种情况下,会话建立一个会话 cookie,允许浏览器指向服务器上的会话数据。
会话数据更加安全,因为在浏览器会话期间,只有一个会话 cookie 是驻留在用户机器上的所有内容。这样您就可以在服务器上存储更敏感的数据(用户名、个人身份信息或帐户数据)。
访问会话数据的唯一方法是通过该用户的一个会话 cookie,它通常是一串很长的随机字符。散列它使得解读变得非常困难。
IP 可以更改,因此使用 IP 来“保持登录”不是一个好主意。最好的方法是在 cookie 中使用 API 密钥。这种方式允许用户即使在更改 IP 时也可以登录(例如当他们连接到代理时)。请参阅下面的问题: “让我登录” - 最好的方法