互联网的开放促成了互联网的繁荣,上面的内容呈爆炸性的增长,想想现在互联网的规模,已经不能和5年前甚至1年前同日而语,而且这种增长趋势丝毫没有停下来的迹象。任何一事物总有其两面性,互联网的开放造成繁荣,同时也引来了问题。现在的互联网鱼龙混杂,一不小心就可能中招,想必我们没少听“点击一个链接,损失好几万”这样的新闻吧。
本文主要讨论浏览器中的安全浏览,即如果保证访问的未知网址是安全的。通常的做法是在访问网址之前,检查一下这个网址的安全性。如果发现这个网站包含恶意代码或者是钓鱼网址,浏览器就会发出警报,并阻止继续访问。其实现在许多app也存在这样的需求,原理都是一样的。如何判断某个网址包含恶意代码,这通常涉及到大数据,比如通过用户上报或搜索引擎主动抓取网页并进行分析等等。通常能够有实力做这件事情都是搜索引擎公司,比如谷歌,其搜索引擎每天抓取了海量的网页进行分析,自然有能力判断网页是否包含恶意代码。谷歌也这样做了,他提供了safe browsing API,开放给所有人。不管是谁都可以在浏览器或App中集成safe browsing API,比如火狐浏览器、苹果safari浏览器就使用了谷歌的safe browsing API。
在探讨谷歌safe browsing API之前,我们先思考一下安全浏览模型应该是怎样的?
最容易想到的一种模型就是采用客户端-服务器的查询模型,如图1所示:
图1 服务器查询模型
浏览器访问URL之前,先发请求给safe browsing服务