在PHP和ASP Classic(VBScript)之间共享登录

时间:2016-09-09 15:50:55

标签: php security login vbscript asp-classic

我试图更新/维护一个最初用Classic ASP / VBScript编写的旧网站,后来添加了PHP页面。我想设置它以便PHP处理登录,但是然后可以在PHP和ASP / VBScript之间共享登录状态。请注意,页面和语言是相当混合的 - 有些人在网站上花费时间可能会遇到每种语言的几个不同的页面,没有特别的顺序。

(最终我希望它能在PHP中完全重写,但我必须一次吃掉这头大象;现在我只是想提高安全性。)

让我们假设我已经成功登录并使用phpPass之类的东西在PHP中验证了用户。如何告诉他们刚刚提取的ASP / VBScript页面他们已登录?我怎样才能最安全地做到这一点?

(谢谢你的帮助!)

2 个答案:

答案 0 :(得分:1)

您不能在Classic ASP / VBScript和PHP之间共享会话,因为它们以不同方式创建/使用它们。我的解决方案并不安全,但可行:

  1. 通过1种语言(例如PHP)
  2. 登录用户
  3. 将初始会话变量传递给URL,然后让ASP查看查询字符串,然后在那里为ASP创建另一个会话。
  4. 那会处理它......虽然不那么安全!

答案 1 :(得分:0)

我能找到的最佳答案如下。具体到在Classic ASP和ASP.net之间共享登录,但方法完全相同:

  

正如您可能已经知道的那样,经典的asp和asp.net无法共享   相同的会话状态,所以你需要有一个机制来记录一个   进入另一个。

     

我要做的是:当有人登录时,创建一个唯一的GUID   您保存在该用户的数据库中。当你从一个站点跳转到   另一方面,将GUID传递给查询字符串。当你尝试   将它们自动登录到另一个站点,查找该GUID并查看是否存在   附在任何人身上。如果是,请将其登录。

     

这样你就不会传递任何用户可以猜到的东西   解密。

此外,向数据库添加时间戳也很聪明;并且GUID应仅在一两秒内有效。登录PHP端,然后转到ASP并检查GUID。

不完全安全,但似乎和我要找的一样安全。

来源:https://stackoverflow.com/a/921575/339440

编辑添加:每条评论,还将用户的IP地址记录到数据库,并在ASP端进行比较。不允许传送!

更正:在这种情况下,“GUID”用词不当。你需要的是随机字符串,而不是GUID。 GUID是一种半随机构造,具有少数特定格式之一,在此不适用。