1

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

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

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

2.) 在会话中存储数据

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

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

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

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

请指教,谢谢您的帮助。

4

2 回答 2

1

Ley 说您通过 URL 传递信用卡信息。

爬虫可以用 CVV 索引页面的唯一方法是用户在提交后被重定向到的 URL 以某种方式泄露。你说你加密了 URL 中传递的信用卡信息,但如何完成的细节是至关重要的。

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

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

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

于 2010-07-12T13:29:36.630 回答
0

为您将传递此信息的页面禁用 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;
于 2010-07-12T13:33:18.757 回答