我有一个小的ecomm表单,它在第1页上获取cc信息,在第2页上执行和命令审查,并在第3页上处理数据和cc。
我使用支付网关,所有我存储的都是来自网关的授权码。但是,我无法从第2页到第3页获取加密数据。
我使用Sodium库在第2页创建密钥和随机数,然后加密cc编号并将该信息与密钥和随机数一起放入隐藏字段并传递到第3页。
由于Sodium创建的加密看起来是unicode,当它到达第3页时,它似乎已经改变了加上Sodium库随机放入字符串的任何引号,导致一切都中断,没有任何解密。
我尝试将页面编码从UTF8更改为Windows-1252,但这并没有做任何事情。表中的实际数据如下图所示。
考虑到所有这些,将数据从一个页面移动到另一个页面的最佳方法是什么,这样我可以保持加密但仍然可以解密最终页面上的信息?
仅供参考,数据库中的加密可能如下所示:
来自字段的数据看起来像
b”ç-+èâ¸;ôÞRÛ†`ó¢I+.0?“òÁk
S¯ÉyØ°ðªàB[±,Râ–îÒÊtH#å¥08Å
ï%Kï8ùM+è@ðgµ%‹3ÒIçüý¡In5H
x¹Xø–ÅÓ>¥4Èbª‚ðˆoµ9…Ÿ‘¸ZMßr§
答案 0 :(得分:2)
除非您完全符合PCI标准,否则您不应让信用卡号码触及您的服务器,即使从一个页面传递到另一个页面:https://www.pcicomplianceguide.org/faq/
您表示您有一个支付网关,这是一个很好的开始。但是,任何有价值的支付网关都会为您提供一种安全的JavaScript方法来对其系统中的信用卡进行标记,以便您只需触摸令牌。然后,您可以在本地存储令牌,以便在必须为卡实际充电时使用。