app产品安全架构_李萧统的博客-爱代码爱编程_app 安全架构
APP产品安全架构
目标
主要涉及软件设计层面的企业级安全措施,网络基础安全方面,DDOS、CSRF、XSS等防护措施不在本文范围内。
目标:
- 网络数据传输保护:包括数据加密,防窃听保护
- 防范api接口恶意攻击与破坏
- 网络病毒防护:隔离互联网潜在病毒
当前企业级APP系统常用安全架构方案
当前企业级APP系统面临的软件设计层面的安全问题包括:网络数据传输保护、恶意api接口攻击与破坏、网络病毒防护,针对这些问题,分别有不同的成熟的解决方案,如下图所示:
网络数据传输保护
网络数据传输保护方面,需要重点保护敏感数据信息,如用户密码、用户个人基本信息不泄露,除了采用https协议的安全传输外,还需要辅助数据加解密设计实现数据保护。具体实现的方案为:采用一些常见的加密算法,如AES、DES、RSA对网络传输数据进行对称/非对称加密。总体数据流转如下:
对称加密与非对称加密在加解密过程、加解密速度、传输的安全性上有所不同。对称加密用不变的密匙加解密,加解密速度快。非对称加密用公钥和私钥配合进行加解密,并且每一次加解密过程中私钥是基于不同的算法生成的随机数,所以非对称加密安全性较高。在APP系统架构中常根据业务场景需求将两种加密方式配合使用以保护网络传输的数据。
防范api接口恶意攻击与破坏
针对服务器端接口恶意攻击与破坏包括:请求参数被篡改,恶意重复请求或者爬虫爬取请求。对于参数被篡改的情况,需要采用签名的设计方式加以解决。
签名的过程中,将用户的参数进行加密生成签名字符串,和原有明文合并发送至服务器端,服务器端校验将明文参数和解密后的签名进行对比。如果在网络传输过程中,用户参数被恶意拦截并更改,在服务端,由参数明文HASH得到的摘要字符串和由签名解密得到的摘要字符串会对比失败,从而识别出请求参数已被篡改。针对重复请求或者爬虫请求,需要设计TOKEN标识,以识别重复请求或者限定请求频率。增加或者修改类重复请求,会导致脏数据或者重复数据,防止重复增加或者修改数据的
TOKEN设计流程如下:
当重复请求时,根据session中是否存在TOKEN来判断请求是否合法。
对于查询类请求或者爬虫爬取类请求,通过设置TOKEN的有效期来限制该类请求在指定时间段内允许访问的最大次数,以控制查询类请求的访问频率。
网络病毒防护
网络病毒防护防止互联网侧的病毒和恶意散播程序扩散至内网。对于外网的防护主要通过网络隔离来实现,通过DMZ区域的设置,隔离企业内网和外部网络。在DMZ区两侧的防火墙,包括外部防火墙和内部防火墙。外部防火墙防止外来网络的攻击,内部防火墙管理DMZ区对内网的访问。配合一定的防火墙隔离策略,实现网络病毒的防护。