虽然 Cookie 和 Session 都可以跟踪客户端的访问记录,但是它们的工作方式显然是不同的,Cookie 通过把所有要保存的数据通过 HTTP 协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储在客户端的浏览器里,所以这些 Cookie 数据可以被访问到,就像我们前面通过 Firefox 的插件 HttpFox 可以看到所有的 Cookie 值。不仅可以查看 Cookie,甚至可以通过 Firecookie 插件添加、修改 Cookie,所以 Cookie 的安全性受到了很大的挑战。
相比较而言 Session 的安全性要高很多,因为 Session 是将数据保存在服务端,只是通过 Cookie 传递一个 SessionID 而已,所以 Session 更适合存储用户隐私和重要的数据。
Cookie与Session都能够进行会话跟踪,但是完成的原理不太一样。普通状况下二者均能够满足需求,但有时分不能够运用Cookie,有时分不能够运用Session。下面经过比拟阐明二者的特性以及适用的场所。
1 .存取方式的不同
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。
而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。
2 .隐私策略的不同
Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
假如选用Cookie,比较好的 *** 是,敏感的信息如账号密码等尽量不要写到Cookie中。更好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都能够有效的保护。
3.有效期上的不同
使用过Google的人都晓得,假如登录过Google,则Google的登录信息长期有效。用户不用每次访问都重新登录,Google会持久地记载该用户的登录信息。要到达这种效果,运用Cookie会是比较好的选择。只需要设置Cookie的过期时间属性为一个很大很大的数字。
由于Session依赖于名为 *** ESSIONID的Cookie,而Cookie *** ESSIONID的过期时间默许为–1,只需关闭了阅读器该Session就会失效,因而Session不能完成信息永世有效的效果。运用URL地址重写也不能完成。而且假如设置Session的超时时间过长,服务器累计的Session就会越多,越容易招致内存溢出。
4.服务器压力的不同
Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。
而Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。关于Google、Baidu、Sina来说,Cookie或许是唯一的选择。
5 .浏览器支持的不同
Cookie是需要客户端浏览器支持的。假如客户端禁用了Cookie,或者不支持Cookie,则会话跟踪会失效。关于WAP上的应用,常规的Cookie就派不上用场了。
假如客户端浏览器不支持Cookie,需要运用Session以及URL地址重写。需要注意的是一切的用到Session程序的URL都要进行URL地址重写,否则Session会话跟踪还会失效。关于WAP应用来说,Session+URL地址重写或许是它唯一的选择。
假如客户端支持Cookie,则Cookie既能够设为本浏览器窗口以及子窗口内有效(把过期时间设为–1),也能够设为一切阅读器窗口内有效(把过期时间设为某个大于0的整数)。但Session只能在本阅读器窗口以及其子窗口内有效。假如两个浏览器窗口互不相干,它们将运用两个不同的Session。(IE8下不同窗口Session相干)
6.跨域支持上的不同
Cookie可以通过如下方式实现跨域名访问,例如将domain属性设置为“.xxx.com”,则“a.xxx.com”和“b.xxx.com”均能够访问该Cookie。事实上只要是以”.xxx.com”结尾的域名均可访问。跨域名Cookie如今被普遍用在 *** 中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。
仅运用Cookie或者仅运用Session可能完成不了理想的效果。这时应该尝试一下同时运用Cookie与Session。Cookie与Session的搭配运用在实践项目中会完成很多意想不到的效果
7.问题
这种“谁家的孩子谁抱走”的处理方式的确是大型互联网的一个比较简单但是的确可以解决问题的处理方式,但是这种处理方式也会带来了很多其他问题,如:
•客户端 Cookie 存储限制。随着应用系统的增多 Cookie 数量也快速增加,但浏览器对于用户 Cookie 的存储是有限制的。例如,IE7 之前的 IE 浏览器,Cookie 个数的限制是 20 个,后续的版本,包括 Firefox 等,Cookie 个数的限制都是 50 个。总大小不超过 4KB,超过限制就会出现丢弃 Cookie 的现象发生,这会严重影响应用系统的正常使用。
•Cookie 管理的混乱。在大型互联网应用系统中,如果每个应用系统都自己管理每个应用使用的 Cookie,将会导致混乱,由于通常应用系统都在同一个域名下,Cookie 又有上面一条提到的限制,所以没有统一管理很容易出现 Cookie 超出限制的情况。
•安全令人担忧。虽然可以通过设置 HttpOnly 属性防止一些私密 Cookie 被客户端访问,但是仍然不能保证 Cookie 无法被篡改。为了保证 Cookie 的私密性通常会对 Cookie 进行加密,但是维护这个加密 Key 也是一件麻烦的事情,无法保证定期来更新加密 Key 也是带来安全性问题的一个重要因素。
当以上问题不能再容忍下去的时候,就不得不想其他办法处理了。
据美国国土安全部(DHS)近日透露,加入“Hack DHS”漏洞赏金项目(bug bounty program)的赏金猎人已经在国土安全部的外部系统中发现了122个安全漏洞,其中27个被评估为严重漏洞。 据悉,国土安全部已向450多名经审查的安全研究人员和道德黑客发放了总计125,600美元的奖金...
Hackernews 编译,转载请注明出处: 韩国安全分析人士在YouTube上发现了一场恶意软件传播活动,攻击者使用Valorant当做诱饵,诱骗玩家下载RedLine——一个强大的信息窃取工具。 这种类型的滥用是相当普遍的,因为黑客发现绕过YouTube的新内容提交审核,或者在被举报和禁号时创...
作为慧与(HPE)的一家网络设备制造子公司,Aruba Networks 于早些时候发生了数据泄露事件。这家企业技术巨头在一份声明中称,未经授权者利用一把私钥,访问了存储于 Aruba Central 云端的客户数据。尽管未详细说明黑客是如何获取到私钥的,但 HPE 确认它可被用于访问存储客户数据的...
Hackernews 编译,转载请注明出处: 一名23岁的俄罗斯人在美国被起诉,并被列入美国联邦调查局网络通缉名单,因为他被指控是一家网络犯罪论坛 Marketplace A的管理员,该论坛出售被盗的登录凭证、个人信息和信用卡数据。 伊戈尔 · 德赫蒂亚克(Igor Dekhty...
据报道,日前,微软、英伟达等科技公司遭到一系列黑客攻击,而网络安全人员在调查中,把目标锁定在了英国英格兰牛津一位16岁少年。四名网络安全专家目前正代表微软等被攻击公司展开调查,对名为“Lapsus$”的黑客组织进行调查,专家们判断,上述16岁少年是这个黑客组织的主谋。 这个黑客组织过去进行了多次高调...
SamMobile 报道称,尽管三星总能在 Google 正式发布修复之前,就为自家规模庞大的 Android 移动设备提供安全更新。然而过去多年销售的三星智能机,还是被发现存在一个出厂即有的安全漏洞,使得黑客能够轻易提取包括密码在内的敏感信息。以色列特拉维夫大学的研究人员指出,问题在于 Galax...