利用本地存储来存储购物车详细信息的更好方法

问题描述 投票:1回答:2

我目前正在开发一个电子商务网站。该网站没有登录页面,因为我们没有在数据库中保留用户详细信息。相反,我们将保留用户的电子邮件与他们联系。因此,我们不会在数据库中拥有用户表。为了将数据保存在用户的购物车中,我们将使用本地存储来存储它。但是,我担心一些恶意用户会篡改购物车中的内容,例如产品价格。因此,我可能会考虑将productID存储在本地存储中,然后在用户重新加载页面时从我的数据库中检索特定产品。

这个解决方案是否健壮有没有更好的方法来利用本地存储来存储用户的购物车,还是有替代本地存储?

javascript local-storage shopping-cart
2个回答
1
投票

The quick and simple answer:

“在将用户的购物车数据发送到后端之前对其进行消毒,并将其与预定义的产品数据库进行核对,以确保产品存在并且实际上已经花费了购物车数据指定的数量。”

The long, detailed answer:

您应该实施一个三阶段系统来验证用户的购物车数据:

  1. 根据您的电子邮件列表/数据库检查用户的电子邮件
  2. 在将用户的购物车数据发送到后端之前对其进行消毒
  3. 根据预定义的产品数据库验证购物车的产品

这样做可以防止黑客:

  1. 使用虚假用户数据购买产品
  2. 修改产品数据
  3. 使产品更多/更便宜
  4. 使用用户的购物车数据将恶意代码注入后端
  5. 创建/购买假冒/不存在的产品

您还应该使用浏览器的内置功能来escape user input

function escape_input(data) {
  var div = document.createElement("div");
  div.appendChild(document.createTextNode(data));
  return div.innerHTML;
}

因为(根据链接的网站):

“在处理用户数据时要始终保持警惕,这一点非常重要 SQL 注入,永远不要通过连接用户提供的数据来构建数据库查询。这些措施可以保护我们服务器上数据的完整性。“

我还建议在用户购买之前使用某种身份验证系统。

一个很好的例子是Google的两步验证系统,它要求您输入通过短信/电话呼叫发送给您的代码到输入表单。

这样做是为了验证用户的身份并防止人们访问/使用其他人的帐户,这个系统几乎不可能欺诈,但也很容易错误地实现它,所以我会采取一些盐的建议。

不幸的是,由于您没有指定任何代码,我无法确定您的网站的安全性。

如果您使用该代码创建一个新问题并将其链接到此处,我将非常乐意尝试帮助您解决应用程序的安全漏洞(如果有的话)。

祝你好运,保持安全。


1
投票

你是对的,你应该只使用id和数据的额外属性。所有重要的事情,比如价格数量......都应保存在服务器端,你必须通过ID查询它们。本地存储是很好的选择,但它限制大约5mb,如果你存储了大量的数据,它将超载并且不再保存。如果你只需要保存id,那很好,否则我建议使用indexDB,我建议你检查https://dexie.org/这个库,如果你更喜欢使用indexDB

© www.soinside.com 2019 - 2024. All rights reserved.