近年来,随着互联网、物联网、移动通信、5g通信等技术的发展,人类的生活和工作越来越离不开软件和互联网。人类文明发展到一定程度,必须遵守法律和社会规范,网络环境也一样。
根据Gartner 对安全架构的定义,安全架构是计划和设计组织的、概念的、逻辑的、物理的组件的规程和相关过程,这些组件以一致的方式进行交互,并与业务需求相适应,以达到和维护一种安全相关风险可被管理的状态。因此,安全架构的概念非常宽泛,包括安全控制措施、安全服务(例如身份验证、访问控制等)和安全产品(例如防火墙、入侵检测等)。
由于文章篇幅有限,内容聚焦在安全架构中的前端安全防护范畴。
安全设计原则
当今安全设计经典理论中,最为经典、被引用最多的是由 MIT 的 Saltzer 教授在 1975 年首先提出的 8 大安全设计基本原则,被安全业界奉为 “经典安全原则”。经过业界多年的发展和总结,在原有 8 大经典设计原则的基础上,进一步完善和延伸,例如 “纵深防御”、“不要轻信”、“保护薄弱环节”、“提升隐私” 原则等。
前端安全问题
近年来有8大问题尤其引起关注:
- 跨站脚本攻击(Cross-Site Scripting)
- 使用iframe的风险
- 点击劫持
- 错误的内容推断
- 不安全的第三方依赖包
- HTTPS中间人攻击
- 本地存储数据泄露
- CDN劫持/污染
如此多的、影响重大的前端安全问题,直接把软件安全防范推上了风口浪尖,安全人员面临着挑战也倍数级增长。
端侧安全的主流解决方案
基于端侧可能得安全问题,市场上有以下6大主流解决方案: 1、APP 代码保护。由于开源技术的进步,攻击者很容易就可以获得应用的反编译代码(基本是应用源代码)。针对此攻击,提高逆向分析的门槛,可以进行代码混淆、dex 加壳、so 加壳等方式对代码进行保护。 2、APP 运行时保护。对移动端应用的逆向分析还有动态调试。通过动态调试还可以伪造或篡改请求 / 响应包,从而攻击服务器端。此种攻击可以采用市场上的一些加固工具软件对APP 进行加固保护,防止恶意破解、反编译、二次打包等。 3、APP 第三方代码安全。移动应用开发过程中,出于功能需求等原因,开发人员不可避免会集成一些其他第三方提供的代码,如 SDK。这些第三方代码未经测试和评估就直接嵌入到应用中直接使用,容易出现不可预料的后果。一方面是第三方代码的安全性未经测试,可能存在安全漏洞被攻击者利用,从而威胁整个应用的正常使用。另一方面,第三方代码额外实现了冗余功能或者申请多余的特权,可能造成用户隐私信息泄露,或者一系列恶意行为。 对于此类威胁,安全设计方案是: 1)App中大部分是web或者小程序类轻应用,可以采用市面上的安全沙箱类技术(如:FinClip),对应用进行统一的上下架管理。其特点主要体现在三个方面:
- 沙箱内小程序之间的隔离
- 沙箱对运行其中的小程序代码,隔离其对宿主环境的资源访问。
- 沙箱隔离了宿主对于沙箱中运行的小程序所产生的数据。
2)集成第三方代码时,开发人员应尽可能了解第三方代码的功能,以及尽可能保证第三方代码的安全性。 4、APP 端业务安全。为了防止 APP 用户恶意注册及薅羊毛等恶意行为,可以在 APP 中加入设备指纹,进行数据埋点等,将 APP 数据接入业务风控平台,进行业务反欺诈。 5、Web 安全。对于 Web 安全,关注常见的 OWASP TOP 10 漏洞,如注入、身份认证、敏感信息泄露、安全配置错误等。常见的防御措施有认证、授权、加密、审计、输入验证等。 6、Restful API 安全。Restful API 以 URI 方式对外提供数据服务或功能服务。外部用户多数情况下是程序或系统。提供的数据服务或功能服务多数情况下,是非公开的,即需要对 HTTP 请求来源和身份做识别与认证,再经过授权决策(访问控制)后,提供相应的数据或执行功能。 随着技术的进步和发展,相信还会有更多的技术解决方案冒出。如果您有更好的技术方案,欢迎在文章评论区留言。