【问题标题】:Ways other than an iframe to pass parameter from php to asp.net将参数从 php 传递到 asp.net 的 iframe 以外的其他方法
【发布时间】:2012-01-20 04:49:12
【问题描述】:

我有一个 PHP 应用程序。如果我已登录该应用程序,我会尝试通过 iframe 将参数作为查询字符串传递到 asp.net 页面。

除了使用 iframe 之外,还有其他方法可以实现吗?

【问题讨论】:

  • 传递参数让知道你登录的ASP.net应用?还是我是其他变量?您也可以发布表单。
  • 是的。想让asp.net 应用程序知道登录了PHP。如何将 php 表单发布到 asp.net?我不清楚你说了什么。
  • 这是否意味着我可以简单地传递查询字符串并在您的 asp.net 应用程序中伪造登录?
  • 是...当登录 php--> 查询字符串到 asp.net 登录 ---> 主页而不请求凭据。
  • 希望这是一个银行网站?另外,您网站的网址是什么,以便我可以嗯,查看它.. :)

标签: php asp.net session iframe


【解决方案1】:

与其让 PHP 应用程序向您的 ASP 应用程序提交数据,不如让它们本地安全地共享一些数据。

怎么做?

嗯,你的目标是让一个脚本告诉另一个用户已经登录,对吧?在 PHP 中,这通常通过在$_SESSION 中添加一些内容来完成。但是,您的 ASP 应用程序无法读取 $_SESSION。你需要使用其他东西。

当用户登录时,创建一个唯一值。也许是hash_hmac 对一些有趣数据的结果?不管它是什么,它应该是唯一的每次创建时并且不可猜测。不要输入用户的 IP 地址或当前时间等信息。

将唯一值保存到两个应用程序都可以读取的数据库表中。还存储有助于识别用户的其他信息,例如她的标识符(user_id 或您手头的任何东西)。

因此,登录用户的 PHP 代码创建了这个唯一值并将其保存在共享数据库表中。现在,PHP 应用程序应该将用户转发到您的 ASP 应用程序。在请求中包含唯一值。

当 ASP 应用程序收到请求时,它会寻找唯一值。如果找到,它可以在共享表中查找。如果在表中找到该值,则它可以采取任何措施 将用户标记为已登录。

一旦 ASP 应用程序让用户登录,它应该删除共享表中的唯一值。用户可以被转发到她最初要去的任何地方。

通过使密钥仅可使用一次,并且仅在成功登录 PHP 应用程序后,您将减少恶意或好奇用户滥用的可能性。所有重要信息都将隐藏在共享数据库表中。

请注意,这是“单点登录”的过于简单的实现,并且充满了警告和极端情况。虽然它可能对您有用,但它可能不是最好的 解决方案。鉴于您的问题历史,您似乎已经为类似的问题苦苦挣扎了一段时间。您可能需要考虑使用稍微“行业标准”的 SSO 机制。 SAML 是 SSO 标准的 800 磅大猩猩。我通常不希望它出现在我最大的敌人身上,但也许这就是你在这里真正要寻找的东西。

另外,不要使用 iframe,它们在某些浏览器中会吃饼干

【讨论】:

  • 如果两个应用程序有不同的数据库。我将如何进行。
  • 请告诉我你猜我没时间了。
  • 如果应用没有共享数据,logins如何共享?您需要先解决该问题,然后才能继续。
  • 我只是从 application1 传递用户 ID,为此我在 application2 中创建了该用户 ID。传递我正在使用 IFrame 的用户 ID。
  • @SVC 如果两个应用程序都存在并且每个应用程序都有自己的独立数据库,那么您无法做您想做的事情。即使你能做到,你不应该那样做。
猜你喜欢
  • 2018-07-06
  • 2015-10-01
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
相关资源
最近更新 更多