回想起十年前,被盗号,网站被黑,简直是家常便饭,那时 https 还没普及,大部分网站还是 http 协议,几乎所有网站都自己搞一套登陆系统 (可能还是明文存在数据库里),也不绑定手机号,甚至不绑定邮箱,密码忘了打客服电话,那时候也还没有前后端分离,大部分网站用 php 写的,SQL 注入,js 跨域攻击的问题数不胜数,基本处于野蛮生长的状态,各种网络安全基建都没起来,云服务也没起来,什么都要自己做。
那个时候的开发往往是这种画风:
数据库 ip 暴露在公网,账号密码是 admin 123456,账密写在源代码里,没有生产环境和测试环境,自己实现登陆系统,自己维护防火墙,基本从硬件到运维到业务逻辑需要自己全权负责,那个时候经常有一些网站处于 ”维护升级“中,连 24 小时可访问也做不到,更没有监控一说,什么报警就更不存在了。
而过了十年,目前基本可以做到,硬件,运维,验证都不需要自己做,只需要关心业务逻辑就好,硬件由云服务提供商统一提供,运维有各种成熟的容器调度工具,CI/CD, 监控系统,验证交给第三方微信,QQ 登陆,自己只做业务逻辑即可,门槛大幅降低,程序员有更多的时间关心业务逻辑,做出来的应用的质量和复杂度也得到了提升,于是我们看到了很多应用的可用性,安全性都得到了提升,并不是程序员的安全水平变高了,只是可用性和安全性,交给了更专业的人和工具来进行保证。
市场经济始终会把社会引向 让每个人或单位都只做自己最擅长的事情,让自力更生变成一个互相依赖的体系。
就登陆验证这个层面,发展趋势也是从 自力更生 到 责任向第三方转移,从而用更容易的方式获得更高的安全性。
网络安全里面有个概念叫信任链,它有点像存储介质,对于现存的验证手段来说,安全性越高,验证的成本就越高,反之亦然,所以当一个安全性更高,且验证成本更低的验证手段出现的时候,就会把之前存在的一些验证手段淘汰掉。
就像对于手机来说,人脸解锁的安全性很高,因为它直指你的生物 ID,按理来说是最靠谱的,所以它就会一定程度淘汰掉密码解锁,因为密码解锁的安全性更低,而且验证成本更高。
而信任链就是,为了方便,我们使用安全性更低的验证方式,但是又能够保证当这种验证方式出了问题的时候,验证的责任能够向上传递,信任链的最高点就是你的信任根,也就是能够说明你一定是你的信息,一般来讲就是你的生物 ID,比如人脸,指纹等。
我们在 PC 端登陆的时候,仍然有大量的账号密码登陆,看起来似乎和十年前差不多,可以安全性仍然增强了,因为现在我们把信任链更好的构建起来了。
今天的账密登陆和十年前的相比,最大的区别就是加入了一些风险检测,系统能够发现账密登陆的异常情况,比如跨设备登陆,异地登陆,机器人登陆等,通过这种方式,你会发现即便你的账密泄露,账号也很难被别人登陆成功,而出现异常时,责任就向上转移,改用手机验证码,人脸扫描等方式进行认证,而在十年前,这种链条并没有很好的构建起来,导致账密泄露了,就等于账号丢失。
不知道大家有没有觉得,十年前你有很多账号,你经常记不清账号的用户名和密码,搞得你很头大,但现在你几乎不怎么记密码了,似乎一切的安全验证都已经无感了,但安全性反而提高了,这一切都归功于三点:
信任链的构建。
出现了更安全,成本更低的验证方式。
验证服务的第三方化。
盗取数据,攻击网站这些,也变得越来越难,现代软件存储与逻辑分离,外网 IP 和内网的容器并没有什么对应关系,数据库的访问权限也被收敛的很好,很多显然的 security vulnerability 都可以很容易的被避免,所以和其它很多领域一样,并不是没有黑客了,只是黑客的门槛变高了。技术发展和完善,导致原来的入门级黑客即所谓的脚本小子无处施展,你现在能够找到一个大商业级别的漏洞,学历怎么也要大学起步有足够的编程经验,才能成为〇日漏洞的专业抓手。
我觉得以后除了大公司和专业的安全公司外,中小企业基本不再会需要雇佣网络安全工程师,而大公司会把这些漏洞挖掘的高手雇佣过来,构建更好的安全基础设施,待这种设施成熟后,再包装成服务卖出去,让中小企业接入这些安全设施,从而得到和大厂一样级别的安全防护能力,这是今天,以及未来几年的发展趋势,所以网络安全工程师也一样遵循我在之前回答中阐述的规律:对高端人才的需求量维持不变或者升高,中低端人才的需求量会下降。
事实上今天来看,还有非常大规模的企业并未能够很好的使用云服务,云服务本身的使用也还是需要一定的专业门槛,很多小微企业仍然需要雇佣有足够经验的工程师才能够把软件保质的开发出来,也就是说上文提到的这些趋势,2021 年还处于这个趋势的中期,甚至是早期。
目前来说,想做出好的应用,仍然需要具备大量的预备知识,而我相信在未来这个门槛会进一步降低,到时候做常规应用的门槛,可能和做 Excel 报表的门槛差不多,只需要三到五天的学习,即可做出完整的应用,不需要去纠结使用什么后端框架,使用什么前端框架,使用什么构建工具等,可以在一个很统一的平台上去完成一个软件的开发和交付。但是这也产生了垄断,哎,这也就是资本主义的发展规律吧