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

时间:2010-07-12 13:12:35

标签: php pci-dss post-redirect-get

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

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

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

2.。)在会话中存储数据

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

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

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

使用PRG模式时,通过URL传递信息似乎是最好的方法。我只是担心页面中的Google Analytics可能会将URL中的查询字符串编入索引。即使查询是加密且不可读的信用卡信息形式,我仍然不希望它出现在任何事情上。希望我认为Analytics会存储和索引这些信息是不正确的。

请指教,谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

Ley说你通过网址传递了信用卡信息。

抓取工具可以使用CVV索引页面的唯一方法是,如果用户在发布提交后以某种方式泄露,则将用户重定向到的URL。您说您加密了URL中传递的信用卡信息,但是如何完成此操作的详细信息至关重要。

如果您只使用相同的密钥加密所有内容,并在请求页面时解密URL信息并将其显示给用户进行确认,那肯定是不够的。例如,它仍然是不够的允许该确认页面只显示一次 - 因为没有那么多的CVV号码,任何用户都可以轻松尝试所有组合并查看它们加密的内容。所以我甚至没有考虑复杂的密码学解决方案。

我认为可以做到这一点的一种可能方式是生成一个长随机密钥(或者只要你正在加密的信息;因为它不是那么多数据,你可以在这种情况下使用对称加密),加密使用该密钥的数据,并将该密钥设置为客户端上的安全且短暂的cookie(当然,全部通过https)。这样,即使URL泄露,只有该用户才能解密信用卡信息。

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

答案 1 :(得分:0)

针对您要传递此信息的网页停用Google Analytics,并确保您在拥有该信息的所有网页上拥有证书。这也是值得你使用一些基本加密的原因。

如果您要发送网址,可以执行以下操作,它会为您提供额外的安全保障:

$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;