在ASP.NET中,如何修改POST数据,然后将其重定向/发布到另一个URL?

在ASP.NET中,如何修改POST数据,然后将其重定向/发布到另一个URL?,asp.net,redirect,Asp.net,Redirect,我有一个页面将一些明文POST数据发送到我写的aspx页面: firstname: John lastname: Doe accountid: 123 我需要获取此POST数据,并通过加密算法运行它,以便数据以如下方式结束: firstname: AKFJULKHI lastname: IDKLNZUI accountid: RIQLKKNIC 编码后,我需要将其发布到另一个aspx页面,该页面需要此编码数据。我无法修改此页。本质上,我正在编写中间页,其目的是获取一些明文数据,使用专有算法对

我有一个页面将一些明文POST数据发送到我写的aspx页面:

firstname: John
lastname: Doe
accountid: 123
我需要获取此POST数据,并通过加密算法运行它,以便数据以如下方式结束:

firstname: AKFJULKHI
lastname: IDKLNZUI
accountid: RIQLKKNIC
编码后,我需要将其发布到另一个aspx页面,该页面需要此编码数据。我无法修改此页。本质上,我正在编写中间页,其目的是获取一些明文数据,使用专有算法对其进行编码,并将其传递到另一个需要加密数据的页面。我意识到这是一个无用的安全功能,因为用户在加密之前知道数据是什么,但我不能修改其他页面,必须坚持API


我的问题是,最简单的方法是什么
Response.Redirect
将其转换为GET请求,
Server.Transfer
不会更改客户端的URL。我可以做一个手动POST请求,然后做一个
响应。写
,但这似乎是一种非常迂回的方法。

HTTP不支持POST重定向


相反,您可以使用HTML表单呈现一个简单的页面,该表单包含修改后的数据的隐藏输入,并指向新的URL,然后使用Javascript自动提交表单。

我想您可能需要使用模块来实现这一点。HttpModule拦截请求,可以更改请求,然后请求继续发送到目标,目标页面不知道请求已被修改


参考:

谢谢。这实际上是目前正在进行的操作,但对我来说,这似乎是一个非常奇怪的攻击。如果我错了,请纠正我,但是
HttpModule
是否适用于所有请求?我只需要编码逻辑就可以处理一个页面,添加一个HttpModule并在所有请求上对这一页面进行if检查,这对我来说是一个很大的开销。是的。我怀疑,如果您将检测URL放在顶部,并在页面不是所需页面时退出模块,那么这将是一种低性能的方法。从好的方面来说,如果这个加密是一个很好的开始,那么一个模块将允许您将这个安全功能添加到所有表单中。谢谢Matt。这种加密显然是一种无用的功能,因为用户可以看到加密前后的字符串,这使得加密毫无价值。然而,我们不能改变现有的代码,所以我们只需要解决它。我有点犹豫是否使用HttpModule方法,因为它只适用于一个页面,而且对于新开发人员来说,当他们试图弄清楚为什么他们接收到的特定页面的数据是编码的,而其余的都不是。你可能是对的,我不是想改变你的想法,但是。。。如果Request.Url不等于旧页面,HttpModule将检测页面名称并退出/跳过处理。因此,您可能希望研究其他解决方案,但这并不是因为它需要在所有其他页面上添加额外的代码(事实并非如此)。我认为问题在于其他页面如何处理发送的数据,以及当另一个页面处理成功时是否返回消息。您可以使用HttpWebRequest类在服务器端发布数据。它看起来像
SSO
体系结构。另一个页面将显示给用户。我的页面只不过是一个“代理”,它在数据从a页转到B页时对数据进行调整。只有当另一个页面打算成为web服务时,这才是一个问题,而事实并非如此。