• 移动安全开发指南
    • 使用本指南
      • 目录

    移动安全开发指南

    我们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 保护内部资源