Security 安全审查:客户信用卡#存储在服务器上,但在客户cookie中存储了一次性pad加密

Security 安全审查:客户信用卡#存储在服务器上,但在客户cookie中存储了一次性pad加密,security,credit-card,Security,Credit Card,我正在写一个系统,像往常一样,客户要求一个方便的“记住你的信用卡详细信息”选项 我告诉他们这很可能是不可能的。然而,我刚才确实有一个好主意(tm),看到加密中的好主意(tm)实际上是坏主意(tm),我想我应该把它放在这里审查一下,看看有什么漏洞可以穿透它 从本质上说,我想用每个客户生成的一次性便笺簿来记录信用卡信息和一些消息签名。此pad作为cookie变量存储在客户端浏览器上。 下次用户尝试购买时,pad将被发送到服务器,如果服务器能够正确解码其加密数据,它将显示已填写的信用卡信息。(抄送信息

我正在写一个系统,像往常一样,客户要求一个方便的“记住你的信用卡详细信息”选项

我告诉他们这很可能是不可能的。然而,我刚才确实有一个好主意(tm),看到加密中的好主意(tm)实际上是坏主意(tm),我想我应该把它放在这里审查一下,看看有什么漏洞可以穿透它

从本质上说,我想用每个客户生成的一次性便笺簿来记录信用卡信息和一些消息签名。此pad作为cookie变量存储在客户端浏览器上。 下次用户尝试购买时,pad将被发送到服务器,如果服务器能够正确解码其加密数据,它将显示已填写的信用卡信息。(抄送信息实际上没有传回)。服务器将永远不会将pad存储在内存或页面文件之外的任何内容中。事实上,我打算让pad发送两次:一次是在到达CC页面时(服务器在这里检查是否应该请求CC信息),一次是在CC提交时获取实际信息

用户还将被指示他们的信息“部分存储”在cookie缓存中,这意味着如果刷新cookie,他们的CC信息将丢失


请告诉我您认为此方案严重失败的地方。

我认为存储pad客户端会使其易受XSS攻击。

我认为存储pad客户端会使其易受XSS攻击。

技术上有缺陷

法律上:可能有缺陷。和律师谈谈

只有当pad安全保密时,一次性pad才能工作。将其存储在cookie中肯定不会被视为安全或机密(它被发送到服务器或从服务器发送到用户的机器,可能是公共终端或共享机器)。这真是个坏主意。这是一个聪明的想法,但最终还是有缺陷的。我建议您阅读PCI合规性文档,做其他人做的事情(一般来说):

  • 不要这样做
  • 使用安全存储抄送和处理账单的支付处理器(即PayPal)
  • 设置一个单独的、高度安全的支付网关,此机器只处理信用卡交易,然后访问存储信用卡数据的安全机器
  • 请记住,存储信用卡号基本上会违反PCI,可能会违反任何商户协议,甚至可能在您的管辖范围内是非法的(隐私法等),请咨询律师
  • 不要这样做。认真地找一个付款处理人,他会帮你处理这件事

  • 技术上:有缺陷

    法律上:可能有缺陷。和律师谈谈

    只有当pad安全保密时,一次性pad才能工作。将其存储在cookie中肯定不会被视为安全或机密(它被发送到服务器或从服务器发送到用户的机器,可能是公共终端或共享机器)。这真是个坏主意。这是一个聪明的想法,但最终还是有缺陷的。我建议您阅读PCI合规性文档,做其他人做的事情(一般来说):

  • 不要这样做
  • 使用安全存储抄送和处理账单的支付处理器(即PayPal)
  • 设置一个单独的、高度安全的支付网关,此机器只处理信用卡交易,然后访问存储信用卡数据的安全机器
  • 请记住,存储信用卡号基本上会违反PCI,可能会违反任何商户协议,甚至可能在您的管辖范围内是非法的(隐私法等),请咨询律师
  • 不要这样做。认真地找一个付款处理人,他会帮你处理这件事

  • 如果信用卡存储在客户端,那么您将其与密钥一起存储,这意味着它易受攻击

    如果您存储的是信用卡服务器端,则不需要存储在客户端的加密密钥


    如果您所描述的情况是,用户不仅没有被授予是否要存储其详细信息的选项,而且还将在不需要以任何方式进行身份验证的情况下重新填充这些信息,那么这听起来是一种非常危险的情况。如果我来到一家网吧,并为我预先填充了信用卡详细信息字段,我会非常高兴

    如果信用卡存储在客户端,则您将其与密钥一起存储,这意味着它易受攻击

    如果您存储的是信用卡服务器端,则不需要存储在客户端的加密密钥


    如果您所描述的情况是,用户不仅没有被授予是否要存储其详细信息的选项,而且还将在不需要以任何方式进行身份验证的情况下重新填充这些信息,那么这听起来是一种非常危险的情况。如果我来到一家网吧,并为我预先填充了信用卡详细信息字段,我会非常高兴

    听起来很粗略,我敢肯定你误用了“一次性便笺簿”这个词

    与其走这条路,不如考虑使用类似Authorize.net的服务。基本上,你给他们卡的信息,他们给你一个你可以用来刷卡的身份证。该ID链接到网站的商户账户,不能用于向任何其他商户收取卡费

    这是非常非常安全的,应该会得到同样的结果


    注意:我不支持Auth.net或其CIM。这只是我最熟悉的一个例子。

    听起来很粗略,我很确定你误用了“一次性便笺簿”这个词

    与其走这条路,不如考虑使用类似Authorize.net的服务。基本上