你有没有过这样的经历?在咖啡店连上Wi-Fi,打开购物App,准备买件衣服,结果刚看过的商品突然出现在朋友的推荐页里。听起来有点吓人,其实这背后可能和缓存数据的安全性有关。
缓存不只是为了提速
很多人以为浏览器或App里的缓存只是为了加载更快,点开页面不用重新下载资源。但其实,这些缓存里可能存着登录状态、搜索记录,甚至部分个人资料。如果这些数据在传输过程中没做加密,就像把日记本放在公交座椅上,谁都能翻两页。
传输过程中的“中间人”风险
当你在公共网络下刷新一个页面,设备会先向服务器请求数据,服务器返回内容的同时,也可能让客户端缓存一部分。如果这个过程走的是HTTP明文传输,附近的攻击者用工具一扫,就能抓到你设备和服务器之间传递的信息,包括那些带用户标识的缓存片段。
加密是基本操作
现在正规网站基本都用HTTPS,也就是在HTTP基础上加了TLS加密层。这样一来,哪怕缓存数据在传输中被截获,看到的也是一堆乱码。比如你访问一个支持HTTPS的新闻站,它的缓存脚本会这样声明:
<link rel="prefetch" href="https://example.com/article-data.json" as="fetch">
注意这里的链接是以https开头的。如果换成http,即使页面主体是加密的,这个预取请求也会暴露信息,等于给漏洞开了扇后门。
App也不能掉以轻心
手机App同样会缓存图片、接口数据,有些为了省流量还会本地存一份用户偏好。如果开发时没统一用加密通道同步这些缓存,比如用明文接口拉取个性化推荐,那就可能被同一网络下的其他设备监听。想象你在公司Wi-Fi下刷健身App,结果同事的手机弹出你的训练计划——不是魔法,是没加密的代价。
普通用户能做什么?
别觉得这是程序员才该管的事。你可以留意平时用的网站和App,地址栏有没有小锁图标;安装应用时看看权限说明里有没有“网络访问”却没提加密;路由器设置里也可以开启DNS over HTTPS,从源头减少泄露可能。这些动作不大,但就像出门锁门一样,是数字生活的基础习惯。
技术再复杂,目的也很简单:让该看见的人看见,不该碰的碰不了。缓存本是为了方便,别让它变成隐患的温床。