虽然 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 也是带来安全性问题的一个重要因素。
当以上问题不能再容忍下去的时候,就不得不想其他办法处理了。
近日 Android 设备被爆存在安全漏洞,但根源来自于苹果的无损音频编解码器(ALAC)。目前,美国市场 95% 的 Android 设备来自于高通和联发科,安全公司 Check Point 指出尚未安装 2021 年 12 月 Android Security Patch 的设备都存在“Out-...
微软周六晚间警告说,它在乌克兰的几十个政府和私人计算机网络中检测到一种极具破坏性的恶意软件,似乎在等待着一种未知行为的触发。该公司在一篇博文中说,周四,大约在乌克兰政府机构发现其网站被破坏的同一时间,监视微软全球网络的调查人员发现了该代码。微软说:”这些系统横跨多个政府、非营利组织和信息技术组织,都...
据称,一名妇女入侵了佛罗里达州一家飞行培训学校的系统,删除并篡改了与该校飞机有关的信息。根据一份警方报告,在某些情况下,以前有维修问题的飞机被 “批准 “飞行。据该学校的首席执行官说,黑客攻击可能使飞行员处于危险之中。 这位名叫劳伦-利德的女性,曾经在墨尔本飞行培训学校工作,在2019年11月底,公...
由安全专家、研究人员和网络工程师们组成的 Zscaler ThreatLabz 团队,刚刚曝光了一款名为 Win32.PWS.FFDroider 的新型恶意软件。据悉,这款基于 Windows 平台的恶意软件,能够创建一个名为 FFDroider 的注册表项,并将窃取到的凭据和 cookie 发送到...
昨晚,据称是恶意软件开发者在国外 BleepingComputer 论坛上发帖,公开了 Maze、Egregor 和 Sekhmet 勒索软件操作的主解密密钥。经安全公司 Emsisoft 确认这些解密密钥是合法的,该公司勒索软件专家和威胁分析师 Brett Callow 表示解密密钥的发布是高压政...
Hackernews 编译,转载请注明出处: 一个APT攻击黑客组织可能与巴勒斯坦结盟,不怀好意,利用以前没有记录的名为NimbleMamba的植入物,已经开始了一项新的攻击。 企业安全公司 Proofpoint 在一份报告中说,这些入侵利用了一个复杂的攻击链,目标是中东政府、外交...