微博账户被盗赞或被动加关注的问题,可能很多用户都遇到过,每天都会发现自己的账户莫名其妙关注或点赞了几十个营销号、广告号、明星号的微博,挨个取消被盗的关注和赞,竟然成了日常最主要的微博操作,很多用户对此感到不厌其烦。
原因分析
从技术上看,能够给微博账号加关注或盗赞的途径通常有:1、微博账户被盗,能够被别人直接登录;2、使用第三方客户端等,可以通过微博开放平台OAuth拿到access token,然后权限被滥用;3、在浏览器上使用web版微博登录时,cookies被泄露了。
对此,微博安全中心也曾给过一些安全建议,比如:建议用户更换密码、升级客户端、设置登录保护、清除第三方应用权限等等,但是不少用户按照建议完成这些操作后,被盗赞的问题仍然存在。
在对不同客户端、web端的访问情况进行分析后我们发现,虽然微博已经启用HTTPS加密 很多开放平台的接口也使用HTTPS加密,但你的浏览器书签、别人发给你的链接、旧的外链、其他应用生成的链接都可能还是 HTTP 的。当部分请求由HTTP连接301跳转到HTTPS时,这个 HTTP 请求仍然会带上浏览器在 weibo.com 域下的所有 cookie。这么一来,当用户登录后在某个特定场景访问到HTTP的微博链接时,仍然可能遭遇cookie劫持,清除授权或修改密码也没有用。
解决方法
通过给 cookie 设置 secure 或者在服务器端设置 HSTS(HTTP Strict Transport Security) 也能解决这个问题,但是微博服务器端的设置是用户无法控制的,作为用户还有没有什么办法解决这个问题呢?沃通CA(www.wosign.com)建议:比较简单的做法就是,用户在Chrome浏览器手动设置HSTS预载入列表(preload list),将微博域名加入预载入列表,强制HTTPS加密访问。
HSTS代表的是HTTPS严格传输安全协议,它是一个网络安全政策机制,能够强迫浏览器只通过安全的HTTPS连接(永远不能通过HTTP)与网站交互,这能够帮助防止协议降级攻击和cookie劫持。但是对于HSTS生效前的首次HTTP请求,依然无法避免被劫持,浏览器厂商们为了解决这个问题,提出了HSTS Preload List(预载入)方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用HTTPS协议。Chrome运营了一个HSTS 预载入列表,大多数主流浏览器Firefox, Opera, Safari, IE 11 and Edge也都有基于Chrome列表的预载入列表。
在Chrome浏览器设置HSTS预载入列表的方法是:
在 Chrome 里打开 chrome://net-internals/#hsts
Add domain中增加微博主域名
Query domain中能查询到就可以了
在HSTS预载入列表中加入微博主域名后,Chrome再遇到HTTP的微博连接,会直接在浏览器内部就跳转到 HTTPS,确保请求从一开始就加密,保证通讯安全,防止cookie劫持、SSL Strip中间人攻击,您可以通过Chrome开发者工具对此进行验证。