php将密钥和加密的CC传递到另一个页面进行处理

时间:2017-09-06 19:32:14

标签: php

我有一个小的ecomm表单,它在第1页上获取cc信息,在第2页上执行和命令审查,并在第3页上处理数据和cc。

我使用支付网关,所有我存储的都是来自网关的授权码。但是,我无法从第2页到第3页获取加密数据。

我使用Sodium库在第2页创建密钥和随机数,然后加密cc编号并将该信息与密钥和随机数一起放入隐藏字段并传递到第3页。

由于Sodium创建的加密看起来是unicode,当它到达第3页时,它似乎已经改变了加上Sodium库随机放入字符串的任何引号,导致一切都中断,没有任何解密。

我尝试将页面编码从UTF8更改为Windows-1252,但这并没有做任何事情。表中的实际数据如下图所示。

考虑到所有这些,将数据从一个页面移动到另一个页面的最佳方法是什么,这样我可以保持加密但仍然可以解密最终页面上的信息?

仅供参考,数据库中的加密可能如下所示:

encrypted data in table

来自字段的数据看起来像

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§

1 个答案:

答案 0 :(得分:2)

除非您完全符合PCI标准,否则您不应让信用卡号码触及您的服务器,即使从一个页面传递到另一个页面:https://www.pcicomplianceguide.org/faq/

您表示您有一个支付网关,这是一个很好的开始。但是,任何有价值的支付网关都会为您提供一种安全的JavaScript方法来对其系统中的信用卡进行标记,以便您只需触摸令牌。然后,您可以在本地存储令牌,以便在必须为卡实际充电时使用。