1
3
对我来说,你的方法听起来和饼干惊人地相似。在某个地方设置一个值,然后在每次加载页面时检查它。我不认为有必要在Cookie/sessions完全足够的情况下重新发明轮子。 一般来说,我更喜欢使用cookie,因为这样用户就可以在会话之间保持登录状态(即当他们关闭浏览器并返回时)。 |
2
1
为什么不使用默认的PHP会话并将其数据存储在数据库中?
This article 这就解释了。 |
3
1
不要使用IP。虽然这对大多数人都适用,但有些人可能有动态IP。例如,访问者可能在其ISP的负载平衡代理服务器场后面。 |
4
0
第1点-取决于人们是否使用静态IP 第2点——负载平衡和冗余问题需要在数据库中存储会话。这还取决于应用程序的繁忙程度。 第3点——其中一个应该足够。 |
5
0
|
6
0
我建议只选择一种方法,并确保其正常工作。有多个验证听起来不错,但通常只是增加了复杂性和bug,而没有添加任何额外的功能。 将这些值存储在会话中,因为这样开销更小,并且可以在您喜欢的时候将会话设置为过期。这解决了整个“上次登录”问题,而无需额外计算。 会话的全部目的是在计算机上存储与该人相关的值,这正是您要查找的。复制似乎是多余的。 |
7
0
|
8
0
为什么需要使用数据库进行跟踪会话。你不觉得这是开销吗?我建议您继续进行PHP会话。 |
9
0
我正在使用CodeIgniter——他们有一个内置的会话处理程序,似乎同时使用cookie和数据库(一个检查另一个)——我正在寻找的一切。。。。框架工作 |
10
0
答案是两者都有! 要点是: 你应该 从不 盲目地接受cookie或会话来验证用户,这两种方法都很容易被XSS窃取,并且可以被源站以外的恶意用户使用。 对于用户验证,由于您无论如何都要对用户进行验证,因此实际上没有开销。 您只需在用户登录数据库时向其应用一个值,并在每次加载页面时通过某种方式进行验证。 我选择的方法是用户会话状态的签入签出方法。 其中在页面加载时创建一个唯一ID,会话变量存储该唯一ID。 该唯一ID还存储在数据库中,用于用户ID,以及IP地址和IP更改。(我还存储了其他经过验证的信息) 这可以用来防止两个单独的浏览器同时登录一个用户ID,这不能仅通过会话来完成,因为会话不关心是谁创建的,也不关心创建它们的时间。 但是对于签入签出,由于唯一ID总是不同的,因此会发生不匹配。 该脚本根据数据库中的会话值和IP地址验证唯一ID。匹配完成后,更改唯一ID并更新数据库。 如果IP在x秒内更改,请为该用户执行某些操作(强制新登录),如果唯一ID不匹配,请执行其他操作(例如注销、警告等),如果上次活动是在x秒之前,请为该用户执行某些操作。 所以登录->创建会话/用户验证->下一页->使用数据库唯一ID验证会话+验证用户->生成新会话唯一ID->更新用户最后一次登录/唯一ID 最后,它可以让你更好地了解用户从哪里访问他们的帐户,以及从每个点访问的频率,例如:工作x3、家庭x5、移动x1。还可以让你保护你的用户免受帐户盗窃。一个德国用户突然从泰国或美国登录。通知他们更改,并向他们的电子邮件发送验证更改的请求。 |
Farid · 限制django每个客户的访问 2 年前 |
josegp · 在Nmap中-p-tag是什么意思 2 年前 |
kramer65 · 如何根据网站用户在S3上添加非公共网站文件? 6 年前 |
derf26 · 如何阻止React Web包包含包中的脚本。json 6 年前 |
user8663960 · 最好也是最简单的方法是保护登录表单的安全 6 年前 |