繁体   English   中英

重定向后获取模型-数据存储方法和PCI合规性

[英]Post-Redirect-Get Model - Data Storage Methods & PCI Compliance

我的问题是在表单上使用PRG模式时如何在重定向期间保留数据。 具体来说,我想在电子商务应用程序中使用它。 我有三种通过重定向存储数据的选项,并且我对每一种都有关注。 我希望你们能够帮助我解决这个问题:

1.)将数据存储在URL字符串中

我可以将数据存储为URL中传递的加密字符串。 很棒是因为我不必存储信用卡信息,但是我担心的是(也许我错了)Google Analytics(分析)可能会导致信用卡信息(尽管被加密)被编入索引并显示在搜索结果中。 希望我在这个问题上是错误的,并且可以使用此方法,因为这是最简单的方法。

2.)在会话中存储数据

我可以将数据存储在会话中,但是我担心某些用户由于禁用了cookie而无法使用会话,这将限制应用程序的实用性。 此外,我将在会话中存储加密的信用卡信息,并且PCI Compliance表示在任何情况下都不允许存储CVV。

3.)在数据库中存储数据

我可以将数据存储在数据库中,这可以解决会话的兼容性问题-但我仍然面临在任何情况下都不允许存储CVV编号的问题。

使用PRG模式时,通过URL传递信息似乎是最好的方法。 我只是担心页面中的Google Analytics(分析)可能会索引URL中的查询字符串。 即使查询是信用卡信息的加密且不可读的形式,我仍然不希望该信息显示在任何东西上。 希望我认为Google Analytics(分析)会存储该信息并为其编制索引是错误的。

请指教,谢谢您的帮助。

莱伊说您通过URL传递了信用卡信息。

爬网程序可以用CVV索引页面的唯一方法是,在用户以某种方式提交帖子后将用户重定向到该URL。 您说要对URL中传递的信用卡信息进行加密,但是如何完成此操作的细节至关重要。

如果仅使用相同的密钥对所有内容进行加密,并且仅在请求页面时解密URL信息并将其显示给用户确认,那肯定是不够的。 例如,仅允许确认页面仅显示一次还是不够的–由于CVV号码不多,因此任何用户都可以琐碎地尝试所有组合并查看对其进行加密的内容。 因此,我什至没有考虑复杂的cryptanalisys解决方案。

我认为可以这样做的一种可能方法是生成一个长随机密钥(或者只要您要加密的信息就可以;因为数据量不大,在这种情况下您可以使用对称加密),请使用该密钥,然后将该密钥设置为客户端上的安全且短暂的cookie(当然,整个通过https)。 这样,即使URL泄漏,也只有该用户才能解密信用卡信息。

这也解决了您可能在Web服务器中记录请求的问题。 由于很少记录cookie,因此对日志的检查也将不足以检索信用卡信息。

在您要传递此信息的页面上禁用Google Analytics(分析),并确保所有具有该信息的页面上都有证书。 您可能也值得使用一些基本加密。

如果您要发送URL,可以执行以下操作,它将为您提供额外的安全保护:

$text   =   '464945645667567564564';
$key    =   'highlysecurkeyhere';

// step 1: encrypt (you can then send this through _GET as urlencoded)
$iv         =   mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CFB), MCRYPT_RAND);
$encrypted  =   mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CFB, $iv);
$encrypted  =   urlencode($encrypted);

// Recieving end, decoe then decrypt.
$output = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, urldecode($encrypted), MCRYPT_MODE_CFB, $iv);
echo $output;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM