PHP实现跨域自动登陆

不少时候多个域名共用了同一组用户数据,每每也想当其中的一个域名登陆后能够快捷的进行另几个域名下自动登陆而不用用户再登陆一次。php

大至能够分为两种状况:一种是一级域名相同,只是二级域名不一样如 test.php.com 和 login.php.com。另外一种是域名一级域名不相同如 test.php.com 和 t.html.com。对于一级域名相同的基本上能够在写COOKIE时只写到一级域名就能够,这样其它的同一级域名能够直接的访问这个COOKIE数 据,但若是一级域名不相同那就没有办法直接访问(至少如今不能)。在这里只说那种一级域名不相同的时候应该怎样去处理。html

 

113838348.jpg

PHP组成的网站能够接收客户端,数据库, 内存缓存,文件等的数据来做出不一样的反映。有的时候须要对不一样的用户操做作独立后期服务时,就得区分用户,能区分的方法就是给用户作标识,用户标识必须在 享受独立服务前与服务器建立会话,登陆就是建立独立会话的开始。登陆做为用户我的标识,同时为用户提供一个规划好的独立空间,容许用户在这个空间里独立享 受服务,因此又引来用户标识安全问题。要想能相对准确的知道用户的身份,只能由客户来操做才能作到这点,当前识别的方式多为用户名加密码外加验证码,用户 登陆是一个敏感操做,在数据安全方面是一个网站的基本。因此只要能找到一个好的传送自动登陆数据到目标网站就能够完成自动登陆的目的。不少人也都在为这个 问题而头疼,如何传送?。数据库

想一想网上支付系统咱们能够得出相仿的模式,由于大部分支付系统都是在本身的平台上完成支付操做,对外提供一个链接支付接囗。这是一个典型的两个不一样的域名之间登陆验证用户标识的架构, 但它们之间的数据交互方式又有多种。但咱们只要一点就能够完成一个相对安全的方法(验证密钥)。登陆与自动登陆都必须经过客户端才相对准确,尤为是不一样域 名且服务器也不一样,完成的思路能够定为:用户先登陆 --> 用户操做要进入另外一个网站(但没有马上进入另外一个网站而是请求当前网站的一个跳转处理地址) --> 跳转处先判断用户的合法性(以合法为例) --> 提取用户名与ID外加验证密钥(密钥能够本身定义也能够直接MD5)组成的链接用header跳转到目标网站 --> 目标网站判断提交过来的数据(合法就建立登陆数据生成会话) --> 跳转到目标网站指定的页面。跨域

160828885.jpg

在这整个处理过程当中最重要的是安全问题,这个URL会不会非法生成或获取从而给网站无形的建立了一个漏洞,这个问题就若是放在网上支付系统上那网上支付可 能很难再进行下去了。这种跨域操做用的最多的是验证串,若是说你的验证机制作的好那么别人就很难建立URL进行漏洞攻击。支付系统就是如此,当前基本上所 有的支付接囗都提供了一个接囗包,而这个包中就有验证串处理机制。为了让这个机制不让你懂了其的加密方法就能够解密或生成,从而引出了密钥或商户名这两个 附加串,它是整个安全的核心,若是这个数据被别人知道了那就麻烦了(若是你认为有的支付接囗还会判断IP或域名很安全,其实这些数据中是相对安全),只要 这两组附加串没有被泄漏那么想破解就没有那么简单,固然若是你非要去爆力破解(只能说明你的时间太多了!)。缓存

网站的安全没有绝对的,但咱们要尽力让它相对安全。对于跨域登陆的方法虽然不仅这一种但基本的思想同样,那就是获取当前的用户信息传给目标网站由目标网站判断合法性再建立会话。安全

上面的例子只是针对不一样域和不一样的服务器(不共用数据)时的一种方法,若是数据库是共用的(主从模式复制数据库管理方式除外)那么这个附加串就能够写在数据库中而且为每一个用户生成不一样的随机附加串来提升安全性!服务器

 

若是想指定进入目标网站的地址,我想只要现多加一个参数传入就OK了!架构

相关文章
相关标签/搜索