richardhj/contao-crossdomaincookies

v0.9.0 2017-09-18 21:39 UTC

This package is auto-updated.

Last update: 2024-09-10 20:44:02 UTC


README

Latest Version on Packagist Software License Dependency Status

在不同域名的Contao安装之间进行跨页链接——并保持某些cookie存活。将能够处理多个域之间的成员身份验证。或者isotope购物车。

安装

通过composer

$ composer require richardhj/contao-crossdomaincookies

用法

  • 确保在Contao安装中使用的所有域名都已设置在根页面的“dns”字段中。
  • 用户必须点击一个链接来获取网站(他/她最初登录的)的cookie。请使用插入标记包括链接。

插入标记

确保将99替换为其他页面的id或别名。

工作原理

页面A和页面B是同一Contao安装的一部分。

当从页面A链接到页面B时,链接看起来像https://page-b.local/?o=page-a.local&t=zyxitopjfsetbjjutwsdf

如你所见,两个get参数被添加到页面uri中

当在页面B上——并且存在get参数时——,将包含一个javascript。此脚本将在页面B上创建cookie。脚本将从https://page-a.local加载,因此cookie是页面A上的cookie。

javascript看起来像

document.cookie = "FE_USER_AUTH=; expires=Sun, 10 Sep 2017 17:34:31 GMT; path=/";
document.cookie = "FE_AUTO_LOGIN=abcdefghijklmnopqr; expires=Mon, 11 Dec 2017 17:34:31 GMT; path=/";

这就是跨域cookie的魔法所在。

安全

关于安全和漏洞的一些话

此扩展自动从给定为get参数的网站加载一个javascript。get参数可以很容易地修改,这个扩展就是实践中XSS漏洞的一个很好的例子。因此,此扩展需要检查给定的get参数url是否属于Contao安装的一部分。因此,在从其他域包含javascript之前,它将验证其他域是否可在Contao安装的根页面的“dns”字段中找到。

为了处理跨域身份验证,此扩展为特定用户激活auto_login(“记住我”)。这意味着,用户将不会被关闭窗口注销,这是默认行为。这是因为Contao会将auth cookie与绑定到cookie的session_id进行比较,因此会在其他域上更改。这可能会对具有敏感数据的网站和使用忘记注销的用户造成问题。为了降低问题,auto_login cookie将在一段时间后过期。

许可

GNU Lesser General Public License (LGPL)。

请随时贡献。