“黑客”入门学习之“Cookie技术详解”
HTTP包含基本认证以及摘要认证协议,利用这些协议只有在提供了正确的用户名和密码后才能访问到web页面。如果服务端需要类似的认证信息来确保web页面的访问权限,那么浏览器每次页面请求的时候都要发送这些认证信息。这些认证信息也可以用来追踪用户。 3. IP 地址 有些用户可能会被基于访问页面的电脑IP地址追踪过,服务端知道当前正在运行浏览器的电脑的IP地址,理论上可以对这个IP地址关联一个用户session。 然后IP地址通常不是一个可靠的追踪session或者标识用户的方法。许多电脑设计的时候就是为了让一个单独用户使用的,例如办公PC,家庭PC会在网络地址转换协议下共享一个公共的IP地址。而且某些系统,例如设计的时候就是为了保持匿名性的,利用IP地址追踪用户显然是不合适的,也是不可能的。 4. URL 查询字符串 一个更精确的技术是基于URL中嵌入信息。URL中的查询字符串部分通常就是为了实现这个目的的,当然也可以使用其他部分。Java Servlet和PHP session机制都是使用这种机制,如果cookie被禁止了。这种方法由服务端在web页面的所有链接中追加包含一个独立session标识的查询字符串组成。当用户点击了其中了一个链接,浏览器把查询字符串传给服务端,允许服务端识别用户维持状态。这些类型的查询字符串非常像cookie,都包含任意的信息供服务端选择,都会随请求返回给服务端。然而其中还是有点不同的。由于查询字符串是URL中的一部分,如果URL后面被重复发送了,那么上面附加的相同信息将会被发送到服务端,这样可能会产生混乱。例如,如果用户的偏好信息被放在了查询字符串中,用户把这个url通过邮件发给了另一个用户,那么这些偏好信息就会变成另一个用户的。而且如果相同用户从不同的源多次访问相同的页面,这样不能确保每次使用相同的查询字符串。例如,如果一个用户第一次通过一个页面的内部站点访问了一个页面,然后第二次又通过外部的搜索引擎访问到这个页面,这样查询字符串可能会不同。如果在这种情况下使用cookie,cookie可以是相同的。 使用查询字符串其他缺点就是安全问题。在查询字符串中存储标识session的数据可以导致session固定攻击,referer日志攻击以及其他安全漏洞。把session标识转成HTTP cookie更安全。 5. 隐藏的表单字段 另一种回话跟踪是使用隐藏域的web表单。这个技术很像使用url查询字符串去保存信息,也有一些优点和缺点。事实上,如果通过HTTP的GET方法处理表单,那么这种技术就和使用URL查询字符串类似,因为GET方法会把表单字段作为查询字符串追加到URL后面。但是大部分表单都是通过HTTP的POST方法处理,这样表单信息包括隐藏的字段都会在HTTP请求体中发送,这样既不是URL中的一部分,也不是cookie的一部分。 从追踪的角度来看这种方式有两种好处。第一,把追踪信息放在HTTP请求体中而不是URL中意味着它不会被普通用户察觉。第二,当用户复制URL的时候不会复制到session信息。 6. "window.name" DOM 属性 所有的现代浏览器都可以通过js使用DOM属性window.name存储一个相当大的数据(2-23M)。这个数据可以用来代替session cookie也是可以跨域的。这个技术可以和JSON对象一起使用来存储客户端上的复杂session变量集合。 不足就是美国单独的窗口或者tab页刚开始打开的时候会有一个空的window.name属性。而且,这个属性可以用来追踪不同站点的访问者。 在某些方面,这种方法可能比cookie更加方便,因为它的内容不会像cookie那样在每次请求的时候自动的发送给服务端,所以它不易收到网络cookie嗅探攻击。然而如果不采用特殊的方法保护数据,它很容易受到其他攻击,因为数据可以被在同一个窗口或者tab中打开的其他站点获取到。 7. 广告主标识码 苹果使用了追踪技术称为"广告主标识码"(IDFA)。这种技术会给每个购买苹果产品的用户分配一个唯一标识。这个唯一标识会被苹果网络广告系统使用,来确定用户正在查看或者回复的广告。 8. ETag 因为浏览器会缓存ETags,然后在后续的请求相同资源时返回,追踪服务器可以简单的复制从浏览器接受的任意ETag来确保ETag长久留存(就像持久化cookie一样)。增加缓存头也可以加强ETag数据的保存。 在某些浏览器中可以通过清理缓存来清楚ETag数据。 9. web 存储 一些web浏览器支持持久化机制,允许页面本地存储信息以后使用。 HTML5标准(绝大多数现代浏览器在某种程度上都支持)包含了一个Javascript API叫做:local storage和session storage。local storage的行为和持久化cookie类似,而session storage的行为和session cookie的行为类似,也就是session storage是绑定在一个单独的tab或者窗口的生命周期中的(也就是页面session),而session cookie是针对整个浏览器的。 IE支持在浏览器历史中持久化信息,在浏览器的收藏夹中,以一个XML格式存储,或者直接在页面中存储到硬盘。 一些web浏览器插件也包含持久化机制。例如Flash有Local shared object,Silverlight有 Isolated storage。 10. 浏览器缓存 浏览器缓存也可以用来存储信息,利用这些信息也可以用来追踪用户。这项技术利用的真相是当浏览器判断出来缓存的已经是最新资源时可以利用缓存而不是重新从站点下载。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |