0

基本上我正在寻找的是这样的东西;

我在一个调用 .ASPX 文件的经典 asp 站点上有一个链接,该文件又从 Sessions 变量中设置了一堆用户凭据,然后重定向到第三方供应商托管的站点,我知道很脏,但无能为力现在它。

所以过程是;1. 加载带有 .ASPX 页面链接的经典 asp 页面 2. 单击链接,发送到 .aspx 页面 3. .ASPX 设置所需数据和 .Send() 到第三方供应商应用程序

问题是,如果用户没有“注销”第三方站点并以新用户名返回,则第一个用户名凭据保持设置。我想要做的是在用户点击进入第三方供应商应用程序之前在.asp页面上调用供应商应用程序在后台注销页面。我正在考虑使用 iFrame,但 iFrame 仅显示注销页面,它实际上不会执行与其关联的代码。

非常感谢任何帮助,尼克 G

4

3 回答 3

0

无论您按照这些思路提出什么解决方案,只要该第三方供应商意识到他们的站点存在巨大的安全漏洞并决定关闭它,它就会起作用。

例如,永远不能通过在页面中注入隐藏的 iframe 来将某人从另一个系统中注销。这是 CSRF 漏洞的一种形式,表明其他站点的安全态势马虎。

我当然会考虑另一种方法。

于 2013-03-20T21:03:22.033 回答
0

如果您的服务器端代码正确,您的 iframe 方法应该可以工作。不过要记住两件事。

首先,会话变量是特定于域的,因此如果您的页面可通过多个域访问,并且 iframe 的 src 属性与用户访问您网站的起始属性不同,那么您的会话数据将不会被识别。如果一个网址包含“www”而另一个不包含,这甚至可能适用 - 我从未测试过这个

其次,经典的 ASP 文件和 ASP.net 文件不能共享会话变量,您需要为每组页面设置单独的变量集。如果您需要同步这两组,一个常见的技巧是使用 0px x 0px iframe,例如

<iframe height="0" width="0" src="dotnetpage.aspx?userid=<%=Session("userid")&loggedin=<%=Session("loggedin")" />

显然 dotnetpage.aspx 将包含将查询字符串值设置为会话变量的代码,并且您可以让经典页面从 .net 页面接收查询字符串

于 2013-03-20T20:23:31.053 回答
0

我想出了一个使用经典 asp 的更好方法,并且只是将 url 作为一个包含在内,它似乎工作正常。

于 2013-03-21T16:31:27.137 回答