如何设计带有访客处理功能的安全购物车?

How to design a secure shopping cart with guest handling?

工作环境:PHP5面向对象,MVC模式,Yii框架

购物车:产品列表,每个产品都有数量和价格。运输车的作用只是把产品放在里面,如果用户要购买物品则:


购物车句柄:

购物车未处理:


问题是:如何设计既高效又安全?

选项 1

创建 sql table 并存储:

在 mysql 上创建一个事件以删除日期时间 > 30 分钟的每一行。

然后要获取购物车,您可以使用当前会话 ID 从 table 中获取所有商品,并创建一个 foreach() 来获取所有商品。

选项 2

将所有购物车信息保存在 cookie 中


在我看来,选项 1 比选项 2 更安全,但会消耗更多资源并可能使 SQL 数据库受到攻击(创建大量新会话使数据库溢出)。 选项 2 会暴露于 cookie 注入,但占用的资源较少,并且会向用户暴露信息。

还有其他/更好的方法吗?

为什么不简单地分配一个包含 quantityitem_id$_SESSION["shoppingCart"] 数组?例如:

$_SESSION["shoppingCart"] = array(
   $item_id => $quantity
);

然后,在处理购物车时,根据存储的item_id,调用一个方法从数据库中收集所有需要的数据。然后您可以继续计算实际的购物车价格。

这样,当 $_SESSION 过期时,您不必在数据库中触发任何事件。如果要保存$_SESSION,也可以将其保存在数据库中。