我的问题是,在表单上使用PRG模式时,如何在重定向期间保留数据。具体地说,我想在电子商务应用程序中使用它。我有三个通过重定向存储数据的选项,我对每个选项都有顾虑。我希望你们能帮我解决这个问题:
1.)将数据存储在URL字符串中
我可以将数据存储为URL中传递的加密字符串。这很棒,因为我不必存储信用卡信息,但我担心(也许我错了) Google Analytics可能会导致信用卡信息被编入索引并显示在搜索结果中。希望我在这个问题上是错误的,可以使用这个方法,因为它是最简单的。
2.)在会话中存储数据
我可以将数据存储在会话中,但我担心由于cookie被禁用,一些用户将无法使用会话,这将限制应用程序的有用性。此外,我将在会话中存储加密的信用卡信息,PCI Compliance表示,在任何情况下都不允许我存储CVV。
3.)在数据库中存储数据
我可以将数据存储在数据库中,这将解决我对会话的兼容性问题--但我仍然面临在任何情况下都不允许存储CVV编号的问题。
在使用PRG模式时,通过URL传递信息似乎是最好的方法。我只是担心页面中的Google Analytics可能会索引URL中的查询字符串。即使查询将是信用卡信息的加密和不可读的形式,我仍然不希望它出现在任何东西上。希望我认为Analytics会存储和索引这些信息的想法是错误的。
请指教,谢谢您的帮助。
发布于 2010-07-12 21:29:37
Ley说你通过URL传递信用卡信息。
爬虫可以索引CVV页面的唯一方法是,如果用户在提交帖子后被重定向到的URL以某种方式泄露。您说您加密了在URL中传递的信用卡信息,但如何实现这一点的细节至关重要。
如果您只是使用相同的密钥加密所有内容,并在页面被请求时解密URL信息并将其显示给用户进行确认,这肯定是不够的。例如,只允许确认页面显示一次仍然是不够的--因为没有那么多CVV编号,任何用户都可以简单地尝试所有组合,看看他们加密了什么。所以我甚至没有考虑复杂的加密解决方案。
我认为一种可能的方法是生成一个长的随机密钥(或者只要您正在加密的信息;因为它不是那么多的数据,在这种情况下您可以使用对称加密),使用该密钥加密数据,并将该密钥设置为客户端上的安全和短暂的cookie (当然,都是通过https )。这样,即使URL泄露,也只有该用户能够解密信用卡信息。
这也解决了您可能在web服务器中记录请求的问题;由于很少记录cookie,因此检查日志也不足以检索信用卡信息。
发布于 2010-07-12 21:33:19
对于您将传递此信息的页面,请禁用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;https://stackoverflow.com/questions/3228835
复制相似问题