java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

多网站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比较方便。

如果一个主站依赖大,其他的依赖不是特别大,采用接口就方便一些了。目前的微博接口主要采用的第二种,大家都通过接口来判断登陆。


This entry was posted in PHP, 程序视点 and tagged . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/many-web-cookie/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply