为多网站同步绑定cookie实现统一认证的策略

发布时间:2020-12-24编辑:脚本学堂
从原则上讲,浏览器绑定一个cookie在一个域名下,无法穿破。不过我们可以为各种站点同步绑定cookie。

从原则上讲,浏览器绑定一个cookie在一个域名下,无法穿破。
不过我们可以为各种站点同步绑定cookie。

1.同步绑定

登陆的时候,同时种下cookie,注销的时候,同时销毁cookie。当然换成session也一样。
同步绑定多见于DZ论坛的开发,DZ论坛本身提供了一套同步原理。最简单的策略就是aaa.com 下验证用户名和账户的时候,同时调用bbb.com,ccc.com 的验证算法。
aaa.com 下用户名username=abc password=123456. POST过去验证成功以后,在成功页面嵌入一个JS。<script src="http://bbb.com/loginsys.php?username=abc&password=123456"><script src="http://ccc.com/loginsys.php?username=abc&password=123456"> 然后分别验证即可。自然同步种下了cookie。销毁时候道理相同。
这种明码传送密码和账户的办法,当然很危险。可以做简单的加密。比如64对称加密将用户名和密码分别加密一下,过去以后,再解密即可。

2.始终采用一个站点的cookie。

这种办法的好处就是不用做同步绑定。用户表直接在aaa.com上即可。直接在bbb.com上,调用一个ajax来验证是否登陆。aaa.com上提供一个文件给其他要同步的站点调用。比如aaa.com/islogin.php 其他站点直接用httpclient下载这个文件或者用ajax下载这个文件。如果登陆返回一串xml,包含了用户名,等等信息,如果没有登陆返回空即可。

如果bbb.com上也有登陆,注册口,全部采用接口方式调用aaa.com对应的文件。
最近搞的一个FLASH项目,就是全部采用了接口方式。还是蛮省事的。

不过这种选择哪种方式,主要还是看网站之间对cookie的依赖程度,如果都很依赖建议采用第一种,毕竟调用自己的cookie比较方便。
如果一个主站依赖大,其他的依赖不是特别大,采用接口就方便一些了。目前的微博接口主要采用的第二种,大家都通过接口来判断登陆。