1

我们需要将数据发布给为我们提供服务的合作伙伴。我们想通过一个表单帖子来做到这一点,以保持简单。

我们将使用 JavaScript 等将表单数据(id)发布到服务提供商网站上的表单中。服务需要获取此 id 并向用户显示一些相关数据。我们将此张贴描绘到他们服务器上的表单中,然后在弹出窗口中显示结果。如果用户对相关数据感到满意,他们将在弹出窗口(位于服务提供商服务器上)的表单上点击提交,并且服务提供商将发布到我们服务器上的控制器。

  1. 用户点击我们网站上的链接
  2. 这会将数据发布到服务提供商站点,并在弹出窗口/iframe 中显示来自服务提供商站点的内容
  3. 用户检查弹出窗口中显示的数据并看到他们对此感到满意
  4. 用户在弹出窗口中点击提交(服务提供商更新他们网站上的内容)
  5. 服务提供商向我们的控制器提交表单数据(我们在我们的网站上更新了一些内容)

我们需要确保只有我们的服务器可以发布到他们的页面,并且只有他们可以发布到我们的页面。

我们正在使用 MVC3。他们正在使用他们选择的网络技术。

关于最简单、最快、最安全的方法的任何建议。显然需要防止重放攻击,并确保它们是唯一可以发布给我们的攻击。

4

1 回答 1

3

我们想通过一个表单帖子来做到这一点,以保持简单。我们将发布到他们服务器上的网页,他们将进行一些处理并将数据发布回我们服务器上的控制器操作。

啊不,那是不可能的。如果您有一个 HTML<form>其操作指向某个 url(无论此 url 位于您的服务器上还是第三方服务器上),当提交此表单时,浏览器将 POST 到此 url 并重定向到它。这意味着虽然您将能够将请求发送到远程源,然后它可能会查询您域上的某些控制器操作,但您将无法在浏览器中显示此控制器操作的执行结果,因为浏览器将显示此远程 url 的执行结果。

因此,一种技术是将 HTML <form>POST 发送到您的控制器操作,该操作本身会将请求委托给远程服务(使用WebClient),然后将一些视图返回给用户。

现在剩下的就是要求远程服务器的网络管理员只允许来自您的 Web 服务器 IP 地址的 HTTP 请求。

当然,这让用户有可能向您的控制器操作发送 HTTP 请求,从而间接访问远程服务。防止这种情况发生的唯一可能方法是使用身份验证并拒绝任何人对该控制器操作的公共访问。

于 2012-05-23T11:15:49.070 回答