1. 如何设置cookie
Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。
从本质上讲,它可以看作是你的身份证。但Cookies不能作为代码执行,也不会传送病毒,且为你所专有,并只能由提供它的服务器来读取。保存的信息片断以“名/值”对(name-value
pairs)的形式储存,一个“名/值”对仅仅是一条命名的数据。一个网站只能取得它放在你的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到你的电脑上的其它任何东西。
Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。
由于Cookies是我们浏览的网站传输到用户计算机硬盘中的文本文件或内存中的数据,因此它在硬盘中存放的位置与使用的操作系统和浏览器密切相关。在Windows
9X系统计算机中,Cookies文件的存放位置为C:WindowsCookies,在Windows
NT/2000/XP的计算机中,Cookies文件的存放位置为Cocuments
and
Settings用户名Cookies。
硬盘中的Cookies文件可以被Web浏览器读取,它的命令格式为:用户名@网站地址[数字].txt。如笔者计算机中的一个Cookies文件名为:ch@163[1].txt。要注意的是:硬盘中的Cookies属于文本文件,不是程序。
Cookies的设置
你可以在IE的“工具/Internet选项”的“常规”选项卡中,选择“设置/查看文件”,查看所有保存到你电脑里的Cookies。这些文件通常是以user@domain格式命名的,user是你的本地用户名,domain是所访问的网站的域名。如果你使用NetsCape浏览器,则存放在“CROGRAMFILESNETS-
CAPEUSERS”里面,与IE不同的是,NETSCAPE是使用一个Cookie文件记录所有网站的Cookies。
我们可对Cookie进行适当设置:打开“工具/Internet选项”中的“隐私”选项卡(注意该设置只在IE6.0中存在,其他版本IE可以单击“工具/Internet选项”“安全”标签中的“自定义级别”按钮,进行简单调整),调整Cookie的安全级别。通常情况,可以调整到“中高”或者“高”的位置。多数的论坛站点需要使用Cookie信息,如果你从来不去这些地方,可以将安全级调到“阻止所有Cookies”;如果只是为了禁止个别网站的Cookie,可以单击“编辑”按钮,将要屏蔽的网站添加到列表中。在“高级”按钮选项中,你可以对第一方Cookie和第三方的Cookie进行设置,第一方Cookie是你正在浏览的网站的Cookie,第三方Cookie是非正在浏览的网站发给你的Cookie,通常要对第三方Cookie选择“拒绝”。你如果需要保存Cookie,可以使用IE的“导入导出”功能,打开“文件/导入导出”,按提示操作即可。
Cookies的写入与读取
Cookies集合是附属于Response对象及Request对象的数据集合,使用时需要在前面加上Response或Request。
用于给客户机发送Cookies的语法通常为:
当给不存在的Cookies集合设置时,就会在客户机创建,如果该Cookies己存在,则会被代替。由于Cookies是作为HTTP传输的头信息的一部分发给客户机的,所以向客户机发送Cookies的代码一般放在发送给浏览器的HTML文件的标记之前。
如果用户要读取Cookies,则必须使用Request对象的Cookies集合,其使用方法是:
需要注意的是,只有在服务器未被下载任何数据给浏览器前,浏览器才能与Server进行Cookies集合的数据交换,一旦浏览器开始接收Server所下载的数据,Cookies的数据交换则停止,为了避免错误,要在程序和前面加上response.Buffer=True。
Cookies的应用
几乎所有的网站设计者在进行网站设计时都使用了Cookie,因为他们都想给浏览网站的用户提供一个更友好的、人文化的浏览环境,同时也能更加准确地收集访问者的信息。
网站浏览人数管理
由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一的ID。使用Cookie,网站可以完成以下工作:测定多少人访问过;测定访问者中有多少是新用户(即第一次来访),多少是老用户;测定一个用户多久访问一次网站。
通常情况下,网站设计者是借助后台数据库来实现以上目的的。当用户第一次访问该网站时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数或判断用户是新用户还是老用户。
按照用户的喜好定制网页外观
有的网站设计者,为用户提供了改变网页内容、布局和颜色的权力,允许用户输入自己的信息,然后通过这些信息对网站的一些参数进行修改,以定制网页的外观。
在电子商务站点中实现诸如“购物篮”等功能
可以使用Cookie记录用户的ID,这样当你往“购物篮”中放了新东西时,网站就能记录下来,并在网站的数据库里对应着你的ID记录当你“买单”时,网站通过ID检索数据库中你的所有选择就能知道你的“购物篮”里有些什么。
在一般的事例中,网站的数据库能够保存的有你所选择的内容、你浏览过的网页、你在表单里填写的信息等;而包含有你的唯一ID的Cookie则保存在你的电脑里。
Cookies的缺陷
Cookie虽然被广泛的应用,并能做到一些使用其它技术不可能实现的功能。但也存在一些不够完美的方面,给应用带来不便。
多人共用一台电脑的问题
任何公共场合的电脑或者许多在办公室或家里使用的电脑,都会同时被两个以上的人使用。这样,当你用它在网上超市购物时,网上超市或网站会在这台机器上留下一个Cookie,将来也许就会有某个人试图使用你的账户购物,带来了不安全的可能。当然,在一些使用多用户操作系统如Windows
NT或UNIX的电脑上,这并不会成为一个问题。因为在多用户操作系统下不同的账户的Cookie分别放在不同的地方。
Cookies被删除时
假如你的浏览器不能正常工作,你可能会删除电脑上所有的临时Internet文件。然而,一旦这样操作以后,你就会丢掉所有的Cookies文件。当你再次访问一个网站时,网站会认为你是一位新用户并分配给你一个新的用户ID以及一个新的Cookie。结果将会造成网站统计的新老用户比发生偏差,而你也难以恢复过去保存的参数选择。
一人使用多台电脑时
有的人一天之中经常使用一台以上的电脑。例如在办公室里有一台电脑、家里有一台、还有移动办公用的笔记本电脑。除非网站使用了特别的技术来解决这一问题,否则,你将会有三个不同的Cookies文件在这三台机器上,而在三台机器上访问过的任何网站都将会把你看成三个不同的用户。
防范Cookies泄密
想知道你访问的网站是否在你的硬盘或内存中写入了Cookies信息吗?只需执行下面的操作步骤,就可以了解和控制你正在访问的网站的Cookies信息。
步骤一
点击IE窗口中的“工具”“In-ernet选项”,打开“Internet选项”设置窗口;
步骤二
点击“Internet选项”设置窗口中的“安全”标签,然后再点击“自定义级别”按钮,进入“安全设置”窗口;
步骤三
找到“安全设置”窗口中的“Cookies”设置项。“Cookies”设置项下有两个分选项,其中“允许使用存储在您计算机上的Cookies”是针对存储在用户计算机硬盘中的Cookies文件;“允许使用每个对话Cookies(未存储)”是针对存储在用户计算机内存中的Cookies信息。存储在硬盘中的Cookies文件是永久存在的,而存储在内存中的Cookies信息是临时的。要想IE在即将接收来自Web站点的所有Cookies时进行提示,可分别选择上面两个分选项中的“提示”项。当然,你也可以选择“启用”,允许IE接受所有的Cookies信息(这也是IE的默认选项);选择“禁止”,则是不允许Web站点将Cookies存储到您的计算机上,而且Web站点也不能读取你计算机中已有的Cookies。
IE6.0提供了更为可靠的个人隐私及安全保护措施,可以让用户来控制浏览器向外发送信息的多少。在“Internet
选项”窗口中新增了“隐私”选项卡(图1),用户可以在其中直接设置浏览时的隐私级别,按需要控制其他站点对自己电脑所使用的Cookies。如果我们正在浏览的站点使用了Cookie,那么在浏览器状态栏中会有一个黄色惊叹号的标记,双击后可打开“隐私报告”对话框,用户可以在其中查看具体的隐私策略,还可直接点击“设置”按钮后在上述“隐私”选项卡中调节安全隐私级别。
在“常规”选项卡中还增加了“删除Cookies”按钮(图2),方便用户直接清除本机上的Cookies。另外,在“工具”“选项”“高级”选项卡中也增加了一些进一步提高安全性的选项(如关闭浏览器时清空Internet临时文件)。其实,如何更好地保护个人隐私和安全是微软下一代“.NET”战略软件中的关键技术,现在IE6.0已经尝试着迈出了第一步。
另外,由于Cookies的信息并不都是以文件形式存放在计算机里,还有部分信息保存在内存里。比如你在浏览网站的时候,Web服务器会自动在内存中生成Cookie,当你关闭IE浏览器的时候又自动把Cookie删除,那样上面介绍的两种方法就起不了作用,我们需要借助注册表编辑器来修改系统设置。要注意的是,修改注册表前请作备份,以便出现问题后能顺利恢复。
运行Regedit,找到如下键值:HKEY_LOCAL_
SettingsCacheSpecial
PathsCookies,这是Cookies在内存中的键值,把这个键值删除。至此Cookies无论以什么形式存在,我们都不用再害怕了。
最后有必要说明的一点是:杜绝Cookies虽然可以增强你电脑的信息安全程度,但这样做同样会有一些弊端。比如在一些需要Cookies支持的网页上,会发生一些莫名其妙的错误,典型的例子就是你以后不能使用某些网站的免费信箱了。
Cookies欺骗
通过分析Cookie的格式,我们知道,最后两项中分别是它的URL路径和域名,服务器对Cookie的识别靠的就是这两个参数。正常情况下,我们要浏览一个网站时输入的URL便是它的域名,需要经过域名管理系统DNS将其转化为IP地址后进行连接。若能在DNS上进行一些设置,把目标域名的IP地址对应到其它站点上,我们便可以非法访问目标站点的Cookie了。
要进行Cookies欺骗,其实很简单。比如在Win9X下的安装目录下,有一名为hosts.sam的文件,以文本方式打开后会看到这样的格式:
127.0.0.1
localhost
经过设置,便可以实现域名解析的本地化,只需将IP和域名依上面的格式添加到文件中并另存为hosts即可。hosts文件实际上可以看成一个本机的DNS系统,它可以负责把域名解释成IP地址,它的优先权比DNS服务器要高,它的具体实现是TCP/IP协议中的一部分。
比如我们要读取的目标站点
www.abc.com
所生成的Cookies信息,可以借助www.def.com(自己的站点)。在www.def.com
存放用来进行欺骗所需的文件,通过它读取和修改对方的Cookie。
步骤一
ping出www.def.com
的IP地址:
ping
www.def.com
Reply
from
192.168.0.1:
bytes=32
time=20ms
TTL=244
然后修改hosts.sam文件如下:
192.168.0.1
www.abc.com
并保存为hosts文件。
步骤二
读取Cookies信息:
将用来读取Cookie的页面传至www.def.com
,此时连上www.abc.com,由于我们进行本机DNS域名解析的修改,这时网络连接的并不是www.abc.com,而是www.def.com
。
这样www.abc.com设在本地的Cookie便可被读出。
步骤三
同样道理,你可对读出的数据进行修改,并可将修改后的信息写入Cookie中。修改完毕后,删掉hosts文件,再重新进入www.abc.com,此时所使用的Cookies数据就是你制定的数据。
总之,在某种程度上虽然可以实现Cookies的欺骗,给网络应用带来不安全的因素,但Cookies文件本身并不会造成用户隐私的泄露,也不会给黑客提供木马程序的载体,只要合理使用,它们会给网站管理员进行网站的维护和管理以及广大用户的使用都带来便利。
Cookies集合具有以下几种属性
1.Expires属性:此属性用来给Cookies设置一个期限,在期限内只要打开网页就可以调用被保存的Cookies,如果过了此期限Cookies就自动被删除。如:
设定Cookies的有效期到2004年4月1日,到时将自动删除。如果一个Cookies没有设定有效期,则其生命周期从打开浏览器开始,到关闭浏览器结束,每次运行后生命周期将结束,下次运行将重新开始。
2.Domain属性:这个属性定义了Cookies传送数据的唯一性。若只将某Cookies传送给搜狐主页时,则可使用如下代码:
3.Path属性:定义了Cookies只发给指定的路径请求,如果Path属性没有被设置,则使用应用软件的缺省路径。
4.Srcure属性:指定Cookies能否被用户读取。
5.Haskeys属性:如果所请求的Cookies是一个具有多个键值的Cookies字典,则返回True,它是一个只读属性。
2. php 关于 cookie 作用域 与 修改cookie值
cookie的值无论到了哪个目录都是一样的
比如在 目录a里 $_COOKIE['test'] = "test_value" 这样传了值
到了目录b里输出 echo $_COOKIE['test'] 结果显示是 test_value
完了再目录b里给cookie重新赋值(也就是修改了值) $_COOKIE['test'] = "change_value"
到了目录a输出的话就是从新赋值的值了也就是 change_value
cookie是在电脑里保存着的文档不是php里的所以你在哪个页面只要cookie没删除输出的话值都是一样的
但愿给你有所帮助
3. cookie作用域的设置
第一点,要设置Response.Cookies(CookieName).Domain = "abc.com" ,这样就可以进行本域操作了
第二点,cookies是无法进行跨域操作的,因为这样安全性会大大降低,所以不用去考虑了
第三点,按程序代码来说,应该是没问题的,你可以测试下能不能取到cookies。
4. 高手请进,php中cookie作用域问题
setcookie("a","value","/"); //第三个 / 是作用范围,然后在2.php可$_COOKIE["a"];//获取
5. PHP 设置跨域 域名cookie
理论上php不可以跨域设置cookie;
php设置cookie流程:返回的信息携带信息,然后靠浏览器来执行写入到cookie,一般浏览器安全机制已经限制跨域写入;
如果你想伪造cookie,可以使用浏览器管理cookie的插件
6. php跨域cookie共享使用方法
这篇文章主要介绍了php跨域cookie共享使用方法,需要的朋友可以参考下
A
机器所在的域:a1.main.com,A
有应用
main.php
B
机器所在的域:b1.test.com,B
有应用
test.php
1.在
main.php
里设置
cookie
的时候,
cookie
的设置方法如下:
代码如下:
setcookie(
"TestCookie",
"okol",
time()
+
3600,
"/",
"b1.test.com",
1
);
这样在
test.php
里就可以取到
cookie
。
2.输入
url
访问
test
的时候,必须输入域名才能解析。
比如输入:
http://b1.test.com/test.php
,可以获取
cas
在客户端设置的
cookie
,
而
B
机器访问本机的应用,输入:
http://localhost:8080/test.php
则不可以获得
cookie
7. 如何使用PHP操作cookie
PHP setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。
必须在任何其他输出发送前对 cookie 进行赋值。如果成功,则该函数返回 true,否则返回 false。
setcookie(name, value, expire, path, domain, secure)
name 必需。规定 cookie 的名称。
value 必需。规定 cookie 的值。
expire 可选。规定 cookie 的有效期。
path 可选。规定 cookie 的服务器路径。
domain 可选。规定 cookie 的域名。
secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
可以通过 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 来访问名为 "user" 的 cookie 的值。在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。如果不需要这样,可以使用 setrawcookie() 代替。
程序1:
设置并发送 cookie:
1 <?php
2 $value = "my cookie value";
3 // 发送一个简单的 cookie
4 setcookie("TestCookie",$value);
5 ?>
01 <html>
02 <body>
03 ...
04 ...
05 <?php
06 $value = "my cookie value";
07 // 发送一个 24 小时候过期的 cookie
08 setcookie("TestCookie",$value, time()+3600*24);
09 ?>
10 <html>
11 <body>
程序2:
检索 cookie 值的不同方法:
01 <html>
02 <body>
03 <?php
04 // 输出个别的 cookie
05 echo $_COOKIE["TestCookie"];
06 echo "<br />";
07 echo $HTTP_COOKIE_VARS["TestCookie"];
08 echo "<br />";
09 // 输出所有 cookie
10 print_r($_COOKIE);
11 ?>
12 </body>
13 </html>
程序输出:
1 my cookie value
2 my cookie value
3 Array ([TestCookie] => my cookie value)
程序3:
通过把失效日期设置为过去的日期/时间,删除一个 cookie:
1 <?php
2 // 把失效日期设置为一小时前
3 setcookie ("TestCookie", "", time() - 3600);
4 ?>
程序4:
创建一个数组 cookie:
01 <?php
02 setcookie("cookie[three]","cookiethree");
03 setcookie("cookie[two]","cookietwo");
04 setcookie("cookie[one]","cookieone");
05 // 输出 cookie (在重载页面后)
06 if (isset($_COOKIE["cookie"]))
07 {
08 foreach ($_COOKIE["cookie"] as $name => $value)
09 {
10 echo "$name : $value <br />";
11 }
12 }
13 ?>
程序输出:
1 three : cookiethree
2 two : cookietwo
3 one : cookieone
程序5:
view sourceprint?
1 /**
2 * 01.cookie设置
3 * */
4 function ssetcookie($var, $value, $life=0) {
5 global $_SGLOBAL, $_SC, $_SERVER;
6 setcookie($_SC['cookiepre'].$var, $value, $life?($_SGLOBAL['timestamp']+$life):0, $_SC['cookiepath'],$_SC['cookiedomain'], $_SERVER['SERVER_PORT']==443?1:0);
7 }
8. PHP 设置跨域 域名cookie
理论上php不可以跨域设置cookie;
php设置cookie流程:返回的信息携带信息,然后靠浏览器来执行写入到cookie,一般浏览器安全机制已经限制跨域写入;
如果你想伪造cookie,可以使用浏览器管理cookie的插件
9. ThinkPHP5设置Cookie有何讲究
Cookie::set()
在设置cookie 的时候它的值是经过序列化+base64_encode加密后存储的
cookie()则是直接写入cookie的
在做Thinkphp和UC同步的时候,刚开始应用登陆同步UC是很正常的,但是反过来的时候却出现了uc.php不能写入cookie的情况。后来发现原来是作用域在作怪。
setcookie('uid', base64_encode(serialize($uid)), time() + 3600, '/');
base64_encode(serialize($uid))这么写的原因是我网站获取cookie的时候用的是Cookie::get("uid");
10. php 设置cookie,添加任意主域名
无论是php脚本还是js脚本,都只能操作自己域名的cookies。
看你的样子像是要模拟登录微信公众平台,你可以使用php的curl伪造cookies提交