在第 3 步,我有一个接受信用卡的表格,第 4 步重新打印包括信用卡最后 4 位数字在内的信息,第 5 步我需要知道完整的 CC # 才能处理它并通过我的 https 发送连接到第 3 方供应商 - 我应该通过隐藏输入存储它还是$_SESSION
可以在第 3 步和第 5 步之间访问它?
仅供参考:我的整个网站已经是 https 了。
在第 3 步,我有一个接受信用卡的表格,第 4 步重新打印包括信用卡最后 4 位数字在内的信息,第 5 步我需要知道完整的 CC # 才能处理它并通过我的 https 发送连接到第 3 方供应商 - 我应该通过隐藏输入存储它还是$_SESSION
可以在第 3 步和第 5 步之间访问它?
仅供参考:我的整个网站已经是 https 了。
将信用卡号作为最后一步,这样您就不必存储它。存储该信息存在许多法律问题。
SSL 不会保护存储在磁盘上的数据。此外,PHP 会话数据默认存储在文件系统中的临时目录下,具有最小权限。因此,数据不仅以纯文本形式存储,而且可以被许多不同的系统用户访问(取决于您的 Web 服务器配置)。
如果你想实现一个多步骤的结帐过程,我建议在浏览器端做一些 AJAX/Javascript 魔术。您可以使用一系列隐藏/折叠的 DIV 收集计费信息,并一次性发布完整的数据集,将 CC 数据一次性发送到您的服务器,然后将 CC 数据中继到您的支付处理器。
绝对不在隐藏的表单域中。如果用户离开或保存页面或有人点击后退按钮,则完整的 CC 信息可用。计算机可能与他人共享。
如果您确实将 CC 保存到磁盘/数据库,则必须对 CC 进行加密,否则您将违反支付卡行业 (PCI) 要求。为方便起见,您可以单独保留最后 4 位数字。
请注意,如果您使用会话(出于其他原因),您必须处理对会话的攻击,包括但不限于会话固定。
另一种可能性是重新设计您的客户端,以便各个步骤只是 ajax 调用(cc 在 js 变量中而不是在表单字段中)并使用 CSS 显示/隐藏各种 div - 在最后一步将整个信息发布到您的服务器.
根本不要存储它。那里有很多信用卡处理设施。除非您绝对必须在内部拥有此功能,否则不要这样做。
说真的,任君挑选。
没有办法。您应该(以某种方式)将其加密存储在服务器上。