我想将一些数据从一个ASP.NET(WebForms)应用程序传输到另一个,编辑:,其中第一个应用程序重定向到第二个应用程序。这两个应用程序在负载平衡的环境中运行,因此不必在同一台服务器上执行。我们讨论的是一个大小范围为几百到几千字节的XML blob,因此编码并将其添加到URL查询字符串中需要一些时间。用户也必须无法清除这些数据(目前它不是安全关键,但将其暴露给用户仍然是一个坏主意)。
有关如何操作的任何建议吗?
答案 0 :(得分:2)
只是快速了解我的头脑......
如果数据完全特定于当前用户的会话,并且这两个站点在同一个域上运行。
为客户生成一个密钥 - 这将是一个相当独特的东西,例如md5(some guid + some header from the user's browser)
将信息存储在键值存储/数据库表中,生成的键为1作为键。
将密钥设置为客户端的cookie。
这样您就可以避免将数据发送到客户端,并且“密钥”应该足够随机,以至于很难猜到。如果还存储了用于生成/加密哈希的标头和GUID,则可以根据请求中发送的标头验证用户cookie中的密钥,如果所有详细信息都不匹配,则拒绝访问。这样做的好处是,您可以在服务器端存储尽可能多的数据。
答案 1 :(得分:1)
我不知道你情况的所有细节,但有几种方法可以做到这一点。
您可以将XML blob从一个站点插入数据库,然后从另一个站点从数据库中检索它。
您可以将XML blob从一个应用程序发布到另一个应用程序中的接收者页面,然后该应用程序将从请求中读取XML。
您可以在第二个应用程序中创建一个Web服务,其方法是从第一个应用程序接收XML blob。
您可以在一个应用程序中将XML写入文件,并在第二个应用程序中从文件中读取它。
答案 2 :(得分:0)
将其存储在加密的Cookie中,您只需为每个请求/响应添加1Kb。
答案 3 :(得分:0)
使用跨站点请求应该相当容易。
第一个应用程序应该返回一个包含表单的页面,其中Action
参数指向另一个应用程序的URL。该页面还应包含一个小的javascript,以便在加载页面后立即回发表单。页面正文包含您要在服务器之间传递的数据。
这样您就可以使用客户端的浏览器为您完成工作。因为页面的主体可能比uri / cookie长得多,所以这种方法应该适合你。
请注意,这是完全合法的,并且至少很少有被动身份验证协议依赖于这种可能性。
编辑:使用加密技术实现数据的完整性。数据可以签名(最简单的方法)或加密+签名(这不仅可以防止用户对数据进行处理,还可以防止看到内容)。
另请注意,如果您不必涉及客户端浏览器,则可以使用任何通信协议直接在服务器(TCP,HTTP)之间传递数据。
答案 4 :(得分:0)
答案 5 :(得分:0)
也许像SSO或类似的东西。
在数据库中,包含这些列的表:
指导(Guid.NewGuid()
)
内容
日期
(也许其他列如用户ID ...用于安全日志)
第一个webapp通过URL发送Guid。 第二个检索数据库中的内容。
日期可用于验证数据:您只能在X秒内访问内容。
答案 6 :(得分:0)
感谢所有回复的人!在与办公室的其他人交谈时,我们最终决定,由于数据实际上是由另一个Web应用程序提供的,因此使用数据的两个应用程序只会调用第三个获取数据。这种方法的缺点是两次拨打电话所需的时间很短;好处是它几乎可以确保两个应用程序始终拥有最新数据,即使是天真的实现也会使最终用户很难对数据做任何事情。