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

标签 c# asp.net security payment-gateway 2checkout

因此,我正在我的网站上使用 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/

相关文章:

c# - 这个协方差相关代码背后的意义是什么?

c# - ASP.NET Core 5.0 MVC : CS1061 error using Html. RenderAction

php - 禁用特定页面上的 Javascript 执行 (HTML/PHP)

javascript - 准备部署express js应用程序,我应该担心哪些安全问题?

jquery - 如何检查ajax调用中的 session 是否过期?

android - 使用 shareduserid 的安全性

c# - 可空对象必须有一个值#2

c# - asp.net 中的确认对话框?

asp.net - 自动数据库同步

c# - 使用 C# 填充 bootstrap 下拉列表