我有一个非常简单的问题,我问的是因为我不确定答案。我正在构建一个有多步注册表单的应用程序。有7个步骤,每个步骤都在不同的PHP页面上。一旦客户端进入下一页,我也会验证提交的表单数据。
我的问题是: 将所有Validated(仅经过验证的)信息存储在Session变量中是否安全,当他们完成注册时,我会将这些会话值写入数据库。为此目的使用会话是否安全?如果没有,如何利用这种方法?
我也为人们提供了选择,让他们回到每一步,如果错误输入了某些内容,就会更改值。在这种情况下,我只会更新Session变量。它也安全吗?
我目前正在使用session_regenerate_id()
来阻止会话窃取。
所以基本上我可以安全地将数据暂时存储在Sessions中,然后将它们插入到数据库中吗?黑客能否在此期间更改会话数据,那么我将在数据库中插入的内容与保存到会话中的内容不同?
我希望你理解我的问题。任何帮助都会得到满足!
答案 0 :(得分:2)
是的,这是安全的。会话数据存储在服务器端,不能由客户端操纵。客户端唯一拥有的是会话密钥,它允许服务器将客户端与该客户端的存储会话变量进行匹配。只要您在将信息存储到$_SESSION
之前验证信息,就可以在流程结束时将会话变量转储到数据库中。
这是more information on sessions and security。解决会话窃取问题的简单方法是使用SSL。
我也为人们提供了选择,让他们回到每一步,如果错误输入了某些内容,就会更改值。在这种情况下,我只会更新Session变量。它也安全吗?
只要您重新验证会话变量,您也可以使用此方法。
答案 1 :(得分:0)
如果您保护会话ID以进行会话窃取然后继续,会话是存储在服务器端的安全变量,每个客户端都有自己的会话,所以如果您确定保持会话ID安全,那么没问题