保护从第三方网站返回的查询字符串

Posted

技术标签:

【中文标题】保护从第三方网站返回的查询字符串【英文标题】:Securing returning querystrings from third-party website 【发布时间】:2012-03-09 22:00:56 【问题描述】:

所以我正在我的网站上使用 2co 实施支付系统。我正在使用他们的“标头重定向”,它在成功付款后将客户返回到我网站上的 ASPX 页面,并带有一堆查询字符串。

无论如何,我想知道。确保这一点的正确方法是什么?如果客户键入他/她自己的参数,例如“Payment.aspx?params-here”,并按照他们的意愿添加信用到他们的帐户,该怎么办。

如何确保这是 100% 真实的?

建议?谢谢!

【问题讨论】:

【参考方案1】:

parameter tampering 的解决方法通常是将查询参数映射到无法轻易操作的东西,例如通过使用单向哈希函数创建摘要以与原始参数一起发送并限制特定映射/摘要有效的持续时间。如果摘要与查询参数匹配,则说明请求未被篡改。

例如你的网址

Payment.aspx?Amount=100

可以变成

Payment.aspx?Amount=100&Digest=53e5e07397f7f01c2b276af813901c2

这是一篇关于该主题的旧但仍然相关的详细文章:Passing Tamper-Proof QueryString Parameters

在 ASP.NET 中,您可以使用 Page.EnableEventValidation,它使用隐藏的文本框作为表单的一部分来验证是否从表单发出请求:

当 EnableEventValidation 属性设置为 true 时,ASP.NET 验证源自用户界面的控制事件 由该控件呈现。控件在期间注册其事件 渲染然后在回发或回调期间验证事件 处理。例如,如果列表控件包含编号为 1 的选项, 2 或 3 呈现页面时,如果回发请求是 收到指定选项编号 4,ASP.NET 引发异常。全部 ASP.NET 中的事件驱动控件默认使用此功能。

【讨论】:

以上是关于保护从第三方网站返回的查询字符串的主要内容,如果未能解决你的问题,请参考以下文章

谷歌计划禁止从第三方网站安装 Chrome 扩展程序

第三方网站返回hybrid app H5页面缓存问题应对策略

保护个人隐私,从自己做起

从网站支付到第三方 PayPal 账户,并确认成功

Spring Security 3.1.3 请求查询字符串被剥离

HTTPS已经保护一半的网络流量