【问题标题】:POS payment from backing bean in JSFJSF 中支持 bean 的 POS 支付
【发布时间】:2013-04-23 08:20:37
【问题描述】:

我想实现对虚拟 POS 的 POST 调用以进行卡支付处理。 POS 只是银行提供的一个服务器程序,必须通过带有交易数据的表格来访问。这可以通过组合一个表单、方法帖子和一组隐藏参数来完成,然后将输出定位到一个新窗口(这是必需的,因为从这一点开始,银行软件会控制)。 但是,出于安全问题,我想从支持 bean 进行 POST 调用。 因此:

  1. 我的 facelet 中的按钮调用 RequestScoped bean 中的方法。此 bean 可以访问会话中的事务数据。
  2. 豆子做了一些东西。
  3. 该方法中,我可以打开一个 URLConnection,添加参数,然后调用银行的程序(我假设它是一个 servlet)。
  4. 无论这个 servlet 的输出是什么,它都必须重定向到客户端的一个新窗口。这个新窗口将包含身份验证和真实支付的内容,但它是银行的软件。

使用 JSF 实现该行为的正确模式是什么?

提前致谢。

【问题讨论】:

  • 我不确定目标是什么。银行网络软件“必须控制”,但您还想从服务器端控制?当你提交表单POST到银行服务器时,还没有提交付款?有没有办法在 POST 中传递您的身份验证主体和付款信息?
  • POST 到银行 servlet 的表单只是传递金额、订单 ID 和一些可选数据。此调用的输出必须重定向到新窗口。从那个窗口开始,进行身份验证和插卡,以及最后的付款。因此,我的应用程序不需要存储(甚至读取)卡片信息。

标签: jsf payment-processing


【解决方案1】:

我想我现在明白了,您希望将银行 servlet 功能集成到您的 JSF 应用程序中,但不想为 PCI 合规性而烦恼。

重定向是一个 HTTP 服务器响应代码,它指定执行 GET 的 URL,因此您无法重定向表单 POST 的响应。

您也不希望以编程方式将此 POST 请求从服务器端传递到银行 servlet 并呈现收到的响应,因为您已经与银行 servlet 启动了一个单独的会话,而不是用户和您的 Web 应用程序之间存在的会话.这实际上是一个严重的安全问题。

除非服务器正在处理与银行 servlet 的所有 HTTP 通信,否则您无法通过 JSF 启动此 Bank Servlet 会话。

在你的场景下我会这样做的方法是使用 Javascript 打开一个带有常规 HTML 表单的新窗口,并将表单的操作设置为银行 servlet URL,并使该表单的初始输入匹配HTTP post 的必需参数名称。提交此 HTML 表单时,SSL 证书将与用户浏览器协商,并且将呈现 POST 响应,而无需您的 Web 应用程序的任何参与。客户端将维护两个单独的会话,用于您的应用程序的会话以及用于银行 Servlet 的会话。

这是执行此操作的安全方法,不会对您的 Web 应用程序提出任何 PCI 合规性要求。

【讨论】:

  • 你是对的。所有这些都是由银行自己设计的,以避免在客户端应用程序中实现 PCI 的东西。您所说的方式是正常(且简单)的方式。如果我想从支持 bean 执行此操作,是因为我不希望参数和银行 servlet url 本身从页面源代码中可见。这些参数是隐藏的,但任何人都可以查看这些参数,包括为该交易生成的安全密钥。这不是更严重的安全漏洞吗?
  • @Carlos 可能,但只有客户端计算机会收到身份验证密钥。关于登录我银行的网络应用程序以在我的家用计算机上查看我的支票账户余额,我可以提出同样的论点。不同之处在于,如果在银行应用程序上使用 SSL 证书,那么只有银行应用程序和我的浏览器可以读取该身份验证密钥或信用卡号。如果有人监视我的网络流量,它将被加密给他们。继续...
  • ... cont 我同意从服务器与银行进行所有通信是最好的方法,但是您的应用程序需要符合 PCI 标准,因为信用卡详细信息将传递给您。
  • 好的,我们同意,我将用一个表单来实现它,在一个空白窗口中打开。只是一点,当我说安全密钥时,我不是在谈论 SSL,而是从交易数据生成的密钥:订单 ID、金额等 + 密钥,然后通过 SHA 加密。这个生成的密钥与这个特定的交易相关联,它是表单中的一个参数。任何人都可以复制并重新提交此表格。银行 servlet 可能会考虑这种重试,但如果有机会,我会感到不舒服。
猜你喜欢
  • 2012-09-06
  • 2011-06-29
  • 2012-06-27
  • 2011-01-10
  • 1970-01-01
  • 2015-11-30
  • 2012-11-15
  • 2010-10-18
  • 2013-03-24
相关资源
最近更新 更多