热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

关于cookie跨域的一些个人经验实录

最近在工作中小组到一个cookie跨域设置的问题,然后就一些知识点进步了梳理,然后到网上搜索这方面的资料。本来这些都是一些基础知识,但是网上很多资料参差不齐,有的错误的文章来被转了很多次,所以我...
最近在工作中小组到一个COOKIE跨域设置的问题,然后就一些知识点进步了梳理,然后到网上搜索这方面的资料。本来这些都是一些基础知识,但是网上很多资料参差不齐,有的错误的文章来被转了很多次,所以我自己通过测试来整理这些问题。

第一个:COOKIE的setDomain属性到底能不能设置成当前应用程序所在的域之外的域名。比如我当前应用的域名是:www.test1.com,那么我在当前的应用里设置COOKIE的Domain为".test2.com",会有什么效果?浏览器会不会接受服务器返回来的COOKIE?假如浏览器真的接受了服务端返回的COOKIE,那么浏览器下次真的访问www.test2.com时到底会不会把之前的COOKIE给带上?

现在我写了两个web程序,每个web程序都有一个servlet,同时修改host文件,第一个应用的域名是:www.test1.com,第二个域名是:www.test2.com。并且使用火狐狸和IE10来做测试,测试过程如下:

1)首先在www.test1.com的程序中设置COOKIE的domain为“.test2.com”,访问该应用,在这种情况下IE和火狐狸的浏览器都会接受COOKIE,而且其Domain很明确是.test2.com,这里就说明COOKIE是可以写到浏览器里的,而不是很多地方说的被忽略云云。但是如果再次访问的时候,无论是访问www.test1.com或者是www.test2.com都不会把这个COOKIE带过去。这就验证了COOKIEde setDomain这个方法是不能设置当前应用所在域之外的域名的,之前看到很多文章说的结论是在www.test1.com的应用中设置COOKIE的domain为www.test2.com,则访问www.test2.com时就能在test2.com的应用中取到该COOKIE,这完全是不负责任的扯淡,那种情形只适合共同根域名的情况。辩证想一想都不可能,否则我就能操纵百度或者阿里的网站来读取我们自己定义的COOKIE?

2)现在我们设置www.test1.com的域名为自己,那么如果我们在www.test1.com的网页中使用Iframe嵌入www.test2.com的应用,那么会是什么结果?

首先我们访问了www.test1.com,这个时候www.test1.com和www.test2.com的COOKIE都写到浏览器里了,无论是在IE还是在火狐狸里都是如此,那么再次访问www.test1.com的时候,IE和火狐狸这个时候不同的地方就显示出来了。这个时候IE只会把www.test1.com的COOKIE带上,而不会带www.test2.com的COOKIE的(也就是说在www.test2.com的应用里是拿不到COOKIE的),而且这个时候你再次专门访问www.test2.com也不会拿到之前明明已经写入到浏览器里www.test2.com域名下的COOKIE。而如果在火狐狸里,则www.test1.com的应用中会取到www.test1.com的COOKIE,而且无论是iframe内嵌或者直接访问www.test2.com的应用里都会拿到自己域名下的COOKIE。这种情况使用和标签获取COOKIE是一样的道理。这样看来IE10的安全级别更高。

3)如果我们非要www.test1.com中利用iframe内嵌www.test2.com的方式来将test2.com域名下的COOKIE带过去给www.test2.com服务应用,那该怎么办?

这个非常简单,设置www.test2.com的head,比如response.setHeader设置P3P。关于P3P协议网上资料一大堆,大家可以自己看看。这里要注意,我们在www.test1.com使用iframe嵌入www.test2.com的应用,则www.test1.com设置的COOKIE就是通常意义的第一方COOKIE,而www.test2.com的COOKIE就是常说的第三方COOKIE,我们要设置P3P是要在第3方的程序中设置,这个很多资料里也没有说明白。其实就是www.test2.com的服务端和浏览器协商,让浏览器允许其携带上COOKIE给服务端。一旦突破这点,再结合referer首部属性就能获取用户的浏览习惯和喜好,像经常购买书籍、电子产品等。比如:A网站嵌入了B网站的一个页面,并且B网站设置了P3P,那么当用户访问A网站的时候会顺便访问B网站,这个时候B网站就随机生成一个ID,将这个ID写入到COOKIE,并将这个id和referer信息存入自己的数据库。下次,无论是C网站或者其他网站内嵌了B,被用户访问了,也或者是用户又访问A,都会顺便访问B网站并且将referer和id存入数据库,如果用户用的是同一个浏览器并且从来不清理COOKIE,这样COOKIE中记录的id就不变,每次访问就会把B的COOKIE带上,B网站根据COOKIE中的id和多次存入数据库的referer就能知道你都登录了哪些网站。因为referer的链接说明了所有问题。这样就可以做到对这个人的跟踪和分析。就好比我把我的眼线放在100商店,你访问各个商店时,他们就把你的购买什么的情况告诉我,天长日久我就知道你喜欢买什么了,不知道这个例子是否准确。

暂时先写到这里吧,这个问题也是首次稍微深入探索下,后边根据进展再补充吧,如果有错误请读者一定指正不胜感激。总之,这种基础知识是设计框架的基石,必须要搞清楚。否则,寝食难安、芒刺在背。

教程网址:

欢迎收藏∩_∩但请保留本文链接。

推荐阅读
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了新款奇骏的两个让人上瘾的功能,分别是智能互联系统和BOSE音响。通过对新款奇骏的配置和功能进行评测,探讨了这两个新增功能的使用体验和优势。此外,还介绍了新款奇骏的其他配置和改进,如增加的座椅和驾驶辅助系统,以及内饰的舒适性提升。对于喜欢音响的消费者来说,BOSE音响的升级也是一个亮点。最后,文章提到了BOSE音响的数字还原能力,以及7座版无法配备BOSE音响的原因。 ... [详细]
author-avatar
zhaoyan666777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有