- 移动安全开发指南
- 使用本指南
- 目录
- 目录
- 使用本指南
移动安全开发指南
我们NowSecure花了很多时间攻击移动应用 - 黑客,破解加密,查找缺陷,渗透测试,并寻找存储不安全的敏感数据。 我们这么做是为了帮助开发人员提高应用程序的安全性。 本文件代表了我们与客户和合作伙伴共享的一些知识。 我们致力于推动全球移动应用安全。
使用本指南
本指南提供了在开发过程中使用的具体建议。 本报告中对攻击和安全建议的描述并不全面或完美,但您将获得实用的建议,您可以使用它们来提高应用程序的安全性。
我们定期修订我们的最佳做法,并欢迎您的贡献。 我们同时会定期从被接受到主存储库中更新本指南并发布在这里。
要了解攻击者可能在您的应用程序上使用的所有攻击方法,请阅读我们的移动安全入门.
目录
- 移动安全入门
- 编码实践
- 2.1 增加代码复杂性和使用混淆
- 2.2 避免简单逻辑
- 2.3 测试第三方库
- 2.4 实施防篡改技术
- 2.5 在内存中安全的存储敏感数据
- 2.6 安全的删除数据
- 2.7 避免敏感数据的查询字符串
- 敏感数据处理
- 3.1 实现安全数据存储
- 3.2 使用Cookie的安全设置
- 3.3 完全验证SSL / TLS
- 3.4 防止SSL降级攻击
- 3.5 限制使用UUID
- 3.6 谨慎处理地理位置数据
- 3.7 本地会话超时机制
- 3.8 使用增强/双因素身份验证
- 3.9 保护应用程序设置
- 3.10 隐藏帐号并使用令牌
- 3.11 使用安全的网络传输方法传输敏感数据
- 3.12 验证来自客户端的输入
- 3.13 避免将应用程序数据存储在备份中
- 缓存与日志
- 4.1 避免缓存应用程序数据
- 4.2 避免崩溃日志
- 4.3 限制缓存用户名
- 4.4 谨慎管理调试日志
- 4.5 注意键盘缓存
- 4.6 注意复制和粘贴
- Webviews
- 5.1 防止frame劫持和点击劫持
- 5.2 使用表单令牌保护CSRF
- iOS
- 6.1 谨慎使用keychain
- 6.2 避免缓存应用程序快照
- 6.3 保护针对缓冲区溢出的攻击
- 6.4 避免缓存HTTP(S)请求/响应
- 6.5 应用ATS(App Transport Security)
- 6.6 正确应用Touch ID
- Android
- 7.1 谨慎配置file permissions
- 7.2 谨慎实现 Intents
- 7.3 检查 Activities
- 7.4 谨慎使用 Broadcasts
- 7.5 谨慎实现 PendingIntents
- 7.6 保护应用程序服务
- 7.7 避免 Intent 嗅探
- 7.8 谨慎实施content providers
- 7.9 遵循WebView最佳实践
- 7.10 避免存储缓存的摄像机图像
- 7.11 避免GUI对象缓存
- 7.12 签名 Android APKs
- Servers
- 8.1 实施正确的Web服务器配置
- 8.2 正确配置服务器端SSL
- 8.3 使用合适的会话管理
- 8.4 保护和执行Web服务的渗透测试
- 8.5 保护内部资源