Segurança
Mobile
App
OWASP
Proteção
Desenvolvimento

应用程序安全:移动保护指南

移动应用程序是常见的攻击目标。敏感数据、支付、个人信息,一切都需要保护。本指南介绍了基本的移动安全实践。

为什么移动安全很重要

敏感数据

应用程序存储有价值的信息。

攻击不断增加

移动是一个日益被探索的载体。

监管

[LGPD0,合规需要保护。

声誉

泄密破坏了信任。

OWASP 移动前 10 名

M1:平台使用不当

不正确使用操作系统安全功能。

M2:不安全的数据存储

不安全位置的敏感数据。

M3:不安全的通信

传输无保护。

M4:不安全的身份验证

身份验证较弱或可绕过。

M5:加密不足

加密实施不当。

M6:不安全授权

访问控制失败。

M7:客户端代码质量

代码中的错误和漏洞。

M8:代码篡改

应用程序修改。

M9:逆向工程

可以分析应用程序。

M10:无关的功能

调试生产中的代码。

安全存储

钥匙串(iOS)

用于凭证和令牌。

密钥库(Android)

硬件支持的安全性。

加密的共享首选项

加密数据。

请勿使用

纯文本文件、日志、不带[加密1]的用户默认值。

安全通信

HTTPS

强制,永远。

证书固定

防止 MITM 攻击。

TLS 1.3

更安全的版本。

网络安全配置

Android:声明安全规则。

身份验证

强密码

复杂性要求。

###艺术硕士

多因素身份验证。

生物识别

面容 ID、触摸 ID、指纹。

会话管理

安全令牌,过期。

授权

最低权限

所需的最低访问权限。

服务器端

始终在服务器上验证。

基于角色

按角色授予权限。

加密

算法

AES-256、RSA-2048+。

###按键

没有硬编码。使用钥匙串/密钥库。

###盐腌

对于密码哈希。

IV 独特

对于[加密2]模式。

代码保护

混淆

使逆向工程变得困难。

ProGuard/R8(Android)

代码混淆。

防篡改

检测修改。

Root/越狱检测

识别受感染的设备。

API 安全

身份验证

基于令牌,[OAuth3 2.0。

速率限制

防止滥用。

输入验证

验证服务器上的所有内容。

输出编码

防止注射。

数据保护

休息时的日期

存储加密。

传输中的数据

HTTPS/TLS。

数据最小化

只收集必要的。

保留

不要保留超过您需要的数量。

安全测试

###先科

静态应用程序安全测试。

达斯特

动态测试。

渗透测试

道德黑客测试。

漏洞扫描

依赖失败。

工具

暴徒SF

移动安全框架。自动分析。

弗里达

动态仪器仪表。

打嗝套件

拦截交通。

OWASP ZAP

漏洞扫描器。

依赖关系

NPM/Gradle 审核

检查是否存在漏洞。

更新

使依赖项保持最新。

供应链

请小心您包含的内容。

iOS 特定

应用程序传输安全

强制使用 HTTPS。

钥匙串服务

安全储存。

数据保护

基于锁屏的保护。

Android 特定

安全网/游戏完整性

检查设备完整性。

网络安全配置

声明网络策略。

加密共享首选项

加密数据。

安全开发

###训练

经过安全培训的开发人员。

代码审查

重点关注安全性进行审查。

威胁建模

尽早识别风险。

安全冠军

团队中的代表。

合规性

LGPD

保护个人数据。

PCI DSS

对于付费应用程序。

健康保险流通与责任法案

对于健康应用程序(美国)。

常见错误

硬编码的秘密

源代码中的密钥。

日志过多

日志中的敏感数据。

仅在客户端验证

服务器必须验证。

###HTTP

未加密的通信。

结论

移动安全需要分层方法。保护数据、安全通信、正确验证并持续测试。安全性不是一个功能,而是一个要求。

##常见问题解答

1) 是否需要证书固定? 强烈推荐用于具有敏感数据的应用程序。

2) 混淆就足够了吗? 不,这是一层保护,而不是完整的保护。

3) 如何测试安全性? 自动化工具+手动笔测试。

4) 可以绕过根检测吗? 是的。作为一层使用,而不是唯一的保护。

5) HTTPS 解决了一切? 不,这是基本的。需要更多层。

另请阅读

  • 【数据泄露防护:安全指南4
  • [Cloudflare WAF:托管保护实际上会阻止什么,什么会通过55
  • [应用程序身份验证:完整的安全性和用户体验指南6
  • 【移动应用维护:持续操作指南7
  • 【移动性能优化:完整指南8
  • [TypeScript 应用程序:TypeScript 开发指南9