我试图更新/维护一个最初用Classic ASP / VBScript编写的旧网站,后来添加了PHP页面。我想设置它以便PHP处理登录,但是然后可以在PHP和ASP / VBScript之间共享登录状态。请注意,页面和语言是相当混合的 - 有些人在网站上花费时间可能会遇到每种语言的几个不同的页面,没有特别的顺序。
(最终我希望它能在PHP中完全重写,但我必须一次吃掉这头大象;现在我只是想提高安全性。)
让我们假设我已经成功登录并使用phpPass之类的东西在PHP中验证了用户。如何告诉他们刚刚提取的ASP / VBScript页面他们已登录?我怎样才能最安全地做到这一点?
(谢谢你的帮助!)
答案 0 :(得分:1)
您不能在Classic ASP / VBScript和PHP之间共享会话,因为它们以不同方式创建/使用它们。我的解决方案并不安全,但可行:
那会处理它......虽然不那么安全!
答案 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是一种半随机构造,具有少数特定格式之一,在此不适用。