因此,我正在我的网站上使用 2co 实现支付系统。我正在使用他们的“ header 重定向”,在成功付款后,客户将返回到我网站上的 ASPX 页面,其中包含一堆查询字符串。
无论如何,我想知道。确保这一点的正确方法是什么?如果客户自己输入参数(例如“Payment.aspx?params-here”)并根据需要向其帐户添加积分,结果会怎样。
如何确保这是 100% 正品?
建议?谢谢!
最佳答案
parameter tampering的解决方案通常将查询参数映射到不易操作的内容,例如通过使用单向哈希函数创建摘要以与原始参数一起发送,并限制特定映射/摘要的有效持续时间。如果摘要与查询参数匹配,您就知道请求没有被篡改。
例如您的网址
Payment.aspx?Amount=100
可能会变成
Payment.aspx?Amount=100&Digest=53e5e07397f7f01c2b276af813901c2
这是一篇关于该主题的古老但仍然相关的详细文章:Passing Tamper-Proof QueryString Parameters
在 ASP.NET 中,您可以使用 Page.EnableEventValidation
它使用隐藏的文本框作为表单的一部分来验证请求是否是从表单发出的:
When the EnableEventValidation property is set to true, ASP.NET validates that a control event originated from the user interface that was rendered by that control. A control registers its events during rendering and then validates the events during postback or callback handling. For example, if a list control includes options numbered 1, 2, or 3 when the page is rendered, and if a postback request is received specifying option number 4, ASP.NET raises an exception. All event-driven controls in ASP.NET use this feature by default.
关于c# - 保护从第三方网站返回的查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346284/