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

时间:2012-02-19 02:56:31

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

所以我在我的网站上实施了2co的支付系统。我正在使用他们的'Header Redirect',它将客户返回到我网站上的ASPX页面,并在成功付款后通过一堆查询字符串。

无论如何,我在想。确保这一点的正确方法是什么?如果客户输入他/她自己的参数,例如`Payment.aspx?params-here',并按照他们希望的方式添加信用。

如何确保这是100%正品?

连连呢?谢谢!

1 个答案:

答案 0 :(得分:2)

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

E.g。你的网址

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中的事件驱动控件默认使用此功能。