PHP会话不可信吗?

PHP会话不可信吗?,php,sql,session,Php,Sql,Session,在PHP中,在页面之间存储数据的最佳方式是什么?我本以为会话可以很好地工作,甚至对象会话(),但假设我正在构建一个购物车,PHP会话真的很容易被黑客攻击,以至于不建议在其中存储购物车/购物篮数据吗?不管怎么说,谁在乎如果有人设法获取了其他人的篮子数据,那肯定不会有任何伤害?显然,信用卡数据等是有害的,但在一个订单中列出不同的产品将根本不令人担心 我见过一个我目前使用的购物车(我没有做到),它将每个订单存储到数据库中的一个表中,然后根据订单ID查询该表以检索所有订单信息。这样做明智吗 我一直在努力

在PHP中,在页面之间存储数据的最佳方式是什么?我本以为会话可以很好地工作,甚至对象会话(),但假设我正在构建一个购物车,PHP会话真的很容易被黑客攻击,以至于不建议在其中存储购物车/购物篮数据吗?不管怎么说,谁在乎如果有人设法获取了其他人的篮子数据,那肯定不会有任何伤害?显然,信用卡数据等是有害的,但在一个订单中列出不同的产品将根本不令人担心

我见过一个我目前使用的购物车(我没有做到),它将每个订单存储到数据库中的一个表中,然后根据订单ID查询该表以检索所有订单信息。这样做明智吗


我一直在努力寻找用PHP做事情的最佳方法,问题是似乎从来没有一种值得信赖的方法来做任何事情。总是有人说这是个坏主意。

问题不在于PHP的会话(除非您的服务器被黑客攻击,在这种情况下,攻击者可以直接访问所有会话数据和其他内容),而在于如何将会话数据与特定用户关联。您有一个必须发送到客户端的会话ID。在cookie中或作为所有入站链接上的GET参数

这意味着有人可以拦截(中间人攻击)那个会话ID,然后自己使用它(从而充当受害者)。或者他可以猜测会话ID(这不太可能)


因此,防止这种情况发生的唯一方法是使用
https
,它将加密服务器和客户端之间的所有请求,并防止任何人获取该信息。

以下是一些有关确保PHP会话安全的一般信息:

也就是说。我已经使用与您描述的类似的方法构建了一些定制手推车。我将DB中的订单ID存储在cookie中。当用户完成结账过程时,将使用存储在不同db表中的订单信息构建购物车页面


但我不一定是为了安全才这么做的。将订单存储在数据库中意味着我不必担心用户的会话过期,也不必担心他们会丢失购物车中的所有内容。如果他们关闭浏览器,第二天再回来,他们仍然可以在以前的地方继续购物。将他们的订单存储在数据库中还可以将购物车与用户ID绑定,这样他们就可以从不同的机器登录,并且仍然保留购物车信息。

而PHP会话在某些情况下可能被劫持,它们通常被认为是安全的,并且对于您描述的情况来说应该是足够的。在整个会话中使用SSL(HTTPS)是非常可取的


另外,如果可能的话,请不要在应用程序中持久保存CC数据。

“PHP会话真的很容易被破解吗”-你怎么会认为它们是可以的?@Quentin有人在我刚刚阅读的另一个stackoverflow问题中提到了这一点,但现在找不到:SSessions不会在当前浏览器会话之外持久存在,如果您希望购物车在两次访问之间保持不变,则需要使用db。@datasage停止传播该FUD。如果这样设置,会话可以永远持续。这并不是说这是一个好主意,只是会话不必在“当前浏览器会话”之后过期。我用户的经验法则是我从不在会话中存储安全数据,因为正如你所说,它们可能被黑客或窃取。所以,如果你只是用它们来存储用户点击的项目,我看不出有什么害处。它比查询数据库快。