chromeiframecookie的简单介绍

http://www.itjxue.com  2023-02-25 04:03  来源:未知  点击次数: 

如何使用嵌入在第三方页面的代码获取自己站点的cookie信息

由于安全问题,cookie只能访问对象只能来自同一个域。

所以,你需要将获取cookie的代码放在同一个域。

或者通过修改表头信息来hack到,这种方法麻烦,而且是黑客技术,出于法律相关,我不能向你说更多。

另外,如果你使用的是chrome或者类似的支持插件的浏览器,可以通过contentScript来实现,这是一个大内容。具体可以参考相关的官方文档。

cookie是加密的信息,你获取来意义不大,它的验证方法会把相关信息发到服务器,一旦不符合就不符合了。

如何解决iframe session 失效问题

iframe跨域与session失效问题的解决办法

这篇文章主要介绍了iframe跨域与session失效问题的解决办法,有需要的朋友可以参考一下

何为跨域跨域session/cookie?

也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie,

会被存储在访客的计算机上。第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网

站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie。

我的问题

在开发讯息在线产品()测试各种浏览器的兼容性时,发现IE浏览器(v7\8)都无法登录(总是提示验证码不匹配错误),而其它浏览器无此问题(firefox、百度等)。因此可以断定这和浏览器脱不了干系。

初步分析:

细查发现,在使用IE浏览器(v7\8)访问时,服务器端日志中显示sessionId一直在变化,每次请求都会产生一个全新的sessionId.

显然这是导致无法登录的直接唯一原因,如果解决这个问题则可正常登录。

深入分析:

为什么在IE浏览器(v7\8)上会出现这种情况呢,百度了解后得知:

出于隐私安全的考虑,IE会丢失Iframe中的Cookie,IE6/IE7支持的P3P(Platform for Privacy Preferences

Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox、Chrome 不存在此问题。

我们知道Session

其实就是基于Cookie的。客户端在第一次与服务器建立会话时,会分配给客户端一个随机的sessionId,并存于客户端cookie中,然后在之后的请求中,会带上这个Cookie,如果在客户端找不到这样的Cookie,那么服务器就会重新分配一个。

而我的应用结构恰恰如此,即内置一个iframe嵌入远程应用来实现的。

解决办法:

要解决这个问题就是要在请求时添加“P3P”协议。那么如何实现呢?

在框架页面加入如下代码:

复制代码

代码如下:

%

// 解决IE7\8跨域访问问题

response.setHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi

CONi HIS OUR IND CNT\"");

%

至此,问题已解决

如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器

请首先修改hosts文件来模拟本机跨域

127.0.0.1 localhost

127.0.0.1 b.com

127.0.0.1 a.com

我们的目的:

由a.com登录,如果登录成功,就生成a.com的cookie。而对于b.com则无需再次登录。

遇到的困难:

浏览器同源策略限制,即A站点页面的脚本是无法直接操纵B站点的内容。

试想如果所有第三方网站都可以对taobao.com的首页任意篡改,那这个社会还有什么安全性可言呢?

其实浏览器的安全策略逻辑很简单,就是我的地盘我做主,出了我的地盘我做不了主。

解决方案:

a.com根据用户输入操作a.com的cookie,b.com根据用户在a.com得到的输入数据来操作b.com的cookie。

如何在a.com用户输入a.com的用户数据时同时提交到b.com的验证页面呢?

这时候iframe就派上用场了。

相关代码:

form method="post" action="?php print $b?setcookie.php" target="ifrm" fieldset

legend跨域获取cookie/legend

b用户名/b

p

input type="text" id ="username" name="username"/

/p

pbutton onclick="login()" type="submit"Login/button/p

/fieldset

/form

...

iframe id ="ifrm" name="ifrm" style="display:none;" src="?php print $b?setcookie.php" /

请注意form表单的相关属性,b.com/setcookie.php页面就是验证a.com用户的输入然后生成b.com的cookie,这样后续访问b.com无需再次输入用户名和密码。

缺点:

需要先设置跨域站点的cookie然后再来设置本域的cookie;

如果跨域站点请求耗时较长,直接影响本域的操作时间;

另外也需要额外的代码来处理跨域站点请求失败后的操作

IE中需要设置接受cookie(隐私),这一点比较不方便。

附件:/Files/1000/xdm.rar

测试方法:

1)按文章开头修改hosts文件

2)登录a.com/default.php

3)输入表单数据

4)点击a.com/default.php下面的链接就可以在b.com/getcookie.php看到b.com的cookie

(责任编辑:IT教学网)

更多

推荐MYSQL文章