0

在 PHP 中的页面之间存储数据的最佳方式是什么?我会认为会话工作得很好,甚至对象会话(https://stackoverflow.com/a/5515341/1445985)但是假设我正在构建一个购物车,PHP会话真的很容易被破解,因此不建议存储购物车/购物篮数据?无论如何,谁在乎是否有人确实设法获得了其他人的篮子数据,这肯定不会造成任何伤害?显然信用卡数据等是有害的,但订单中不同产品的列表根本不用担心。

我已经看到我目前使用的购物车(我没有做到)将每个订单存储到数据库中的一个表中,然后通过订单 ID 查询该表以检索所有订单信息。这是可取的吗?

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

4

3 回答 3

5

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

PHP 会话安全

那就是说。我已经使用与您描述的类似的方法构建了一些自定义推车。我将数据库中的订单 ID 存储在 cookie 中。随着用户在结账过程中前进,购物车页面是使用存储在不同数据库表中的订单信息构建的。

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

于 2013-03-12T14:51:56.993 回答
2

虽然 PHP 会话可以在某些情况下被劫持,但它们通常被认为是安全的,并且对于您所描述的情况应该绰绰有余。强烈建议对整个会话使用 SSL (HTTPS)。

此外,如果可能的话,根本不要在您的应用程序中保留 CC 数据。

于 2013-03-12T14:57:30.670 回答
1

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

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

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

于 2013-03-12T14:51:40.813 回答