如何在不使用任何浏览器相关组件的情况下将数据发布到另一个网站?
Posted
技术标签:
【中文标题】如何在不使用任何浏览器相关组件的情况下将数据发布到另一个网站?【英文标题】:How to post data to another website without using any browser related component? 【发布时间】:2011-08-20 10:54:56 【问题描述】:我有一个页面,只要求用户输入付款金额,然后用户将被重定向到另一个处理付款的网站,我希望在重定向页面上设置金额而不使用查询字符串、cokkie 等..
我尝试使用网络服务,但这是我的挑战:
用户在网站上输入金额。 调用 web 服务并将金额设置为 ex:400$ 然后用户在没有任何查询字符串的情况下被重定向到另一个网站。
现在:
这个支付网站如何知道这个用户是在重定向页面上输入400$的用户?
我也可以指望比这更安全的方法。
谢谢
我在网上做了一些研究,问了我有经验的朋友,答案是“不可能”。 因为重定向的网站以某种方式识别该用户,并且没有查询字符串或浏览器相关组件就没有解决方案,
这是我朋友的建议,我有点满意,不完全:)
他将这种方法称为票务,
首先创建一个 datetime.now 整数,用该数字添加 id 和要处理的金额。 然后做一个复杂的函数来加密数据。取每个奇数的平方,然后除以 7 等。 然后在另一个网站上,解密数据并检查日期时间是否在 5 分钟内,例如, 链接有效。
【问题讨论】:
您的问题更为笼统,适用于任何语言。我冒昧地重新标记它。 【参考方案1】:您必须以某种方式将数据传递到其他网站。
由于域限制,Cookie 无法使用。
查询字符串或表单帖子可以工作,但您不想使用查询字符串。
或者,如果两个站点共享基础架构,您可以使用它来共享信息 - 例如,如果它们都可以访问同一个数据库,您可以使用它来共享数据(尽管您仍然需要识别特定用户以两个网站)。
【讨论】:
【参考方案2】:服务必须工作的方式是返回一些令牌,可能是 GUID,然后站点将在 HTTP 请求的查询字符串中查找该令牌,以识别该预填充数据的所有者。然后,您将该令牌附加到您的重定向上,并且客户端发出一个请求,该请求导致支付站点为该客户端提取预加载的数据。
您仍然必须使用查询字符串,但现在,查询字符串不包含任何人类可消费的信息;他们无法在查询字符串中识别出他们的 400 美元金额并将其更改为不同的金额。如果他们完全更改 GUID,请求很可能会失败,因为该 GUID 不会存在于支付站点后面存在的任何预填充数据的数据存储中。
【讨论】:
我同意必须使用查询字符串。我想您可以使用美元金额并对其进行加密/解密。您还可以存储一个标识符以在数据库中使用。 我的想法是围绕一个 GUID,它的值在数学上与它所代表的数据无关。如果您对查询字符串进行加密,则必须有一种单独的方法在站点之间共享密钥,因此您又回到了原点。 问题是,如果他能够选择这个其他站点如何确定用户是谁,那么它必须是他的站点,如果不是,听起来他仍然对它的工作方式有影响,因此密钥将存储在该站点中以对其进行解密。 数据加密和密钥共享是浏览器和支付网络服务器的工作。为此,标准协议是 SSL。当然,网络服务器需要被信任,我们为此提供了信任的第三方证书。 @Nick 没有加密密钥存储在任何站点上(我的意思是应用程序级别)。通道安全性位于传输层之上,而不是应用层。在 SSL 握手时,网络服务器与浏览器共享公钥以建立加密方法和唯一的会话密钥。【参考方案3】:联系网站/网络服务/网关。他们将为您提供 API,该 API 将定义参数和方法来接受付款金额。如果您是此类服务的作者,请提供从您的调用者应用程序接受此类参数的机制。通信应该是安全的,使用 SSL。
例如,对于支付网关 Paypal,请查看以下内容: Use of the PayPal payment system in ASP.NET
【讨论】:
【参考方案4】:看看wikipedia。
【讨论】:
【参考方案5】:简而言之,这种方式是不可能的,因为重定向网站应该以某种方式识别用户,所有方式都与浏览器或 ip 相关(以后可能会导致很多问题)
【讨论】:
以上是关于如何在不使用任何浏览器相关组件的情况下将数据发布到另一个网站?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不显示第一个组件的情况下将组件路由到另一个组件? - 角
如何在不使用任何付费工具的情况下将 dbf 文件导入 mysql?
Android:如何在不使用 PHP 或任何网络服务的情况下将数据发送到远程数据库?
Android:如何在不使用 JDBC、PHP 或任何其他网络服务的情况下将数据发送到 MySQL DB? [复制]