2010-06-26 20 views
1

我正在寻找使用PRG模型构建电子商务表单。我的问题是如何在每次页面转换期间保持用户信用卡信息的最佳方式(第1页输入,第2页审查/提交,第3页谢谢) - 是SESSION处理此问题的最佳方式,并且足够安全?如果不存储在SESSION中,我还能做什么?交易完成后,我将取消设置SESSION var。存储在SESSION中的信息有没有简单的加密方法?你的想法感激。发布/重定向/获取模型 - 会话和安全

回答

0

会话都不是安全的,有安全风险,如:

我建议你商店,你将敏感数据转换成数据库,而不是以加密的方式将其读回到页面中。

+0

将交易内容存储在数据库中,不会以任何方式保护您免受会话固定或会话劫持问题的困扰。 (但将它存储在数据库中仍然是一个好主意)。 – Jacco 2010-06-26 10:44:27

0

会话是而不是默认情况下是非常安全的。例如,它们不在磁盘上加密。如果您想在会话中加密一个值,那么可以使用您的加密扩展选项轻松完成此操作,就像PHP中的任何其他变量一样。

这就是说,你不应该那样做。检查您的信用卡服务。机会是他们提供了执行授权过程和卡的实际充电的能力,分两步进行。您可以立即授权该卡并将交易信息(在数据库中!)存储,以代替存储用户的信用卡数据。稍后,在实际收取卡时,您可以提供授权信息。检查您的信用卡处理器的API文档以获取有关此技术的更多信息。

此过程可能不适用于可能具有不平凡处理时间的事物。您可能只想在用户卡上保留授权一两天。

某些处理器将允许您在卡上放置一个小的授权(例如$ 1- $ 5),然后取消事务。之后,他们允许您使用原始授权作为参考,并且收取适当金额的卡,而不必拥有原始卡信息。并非所有的处理器都会允许。在这样做之前请先与你确认一下。

0

在PHP中使用SESSION并不是真正的加密潜在敏感信息(如信用卡)的手段,而是允许程序员在无状态协议(HTTP)中拥有有状态信息的方式。话虽如此,如果您想要能够安全地处理事务,您可能需要考虑SSL,它使用公钥加密在客户端和Web服务器之间建立安全连接。这是用于HTTPS连接的协议。

使用SESSIONs与使用加密是Web应用程序的两个不同区域,创建安全连接在很大程度上与使用SESSION无关。通过SESSIONs,您可以坚持自己的信用卡信息和SSL,您将能够安全地处理交易。

幸运的是,实施SSL是相对简单和抽象出来:

<form method="post" action="https://securestuff.ecommerce.com/process.php"> 

注意使用https://宁可http://

如果你想守住信用卡号码在数据库中,这是一个不同的野兽,但它似乎并不像你会需要它:)