观看网络研讨会"保护移动应用程序的最佳实践",获取有关 NativeScript 安全性的提示和技巧!
所以让我们来解决这个问题!我将概述原生应用程序如何保护代码和数据以及 NativeScript 如何做到这一点。
它实际上就是保护应用程序代码和保护应用程序使用和存储在设备上的数据。让我们从数据部分开始。
公司和开发人员通常担心保护敏感数据。当然,这里的一条经验法则是不要将任何敏感数据存储在设备上。
获取数据,
将数据存储在设备上
iOS 和 Android 提供了一组供应用程序使用的加密 API。这些 API 包括对标准和常用加密原语的实现,例如高级加密标准 (AES)、Rivest-Shamir-Adleman (RSA)、数字签名算法 (DSA) 和安全哈希算法 (SHA)。此外,还提供了针对更高级协议的 API,例如安全套接字层 (SSL) 和 HTTPS。要了解更多信息,请访问以下链接 - iOS Keychain 和 Android KeyStore.
要在设备上存储简单的键值数据,你可以访问原生框架中提供的完整 API。NativeScript 中的 SecureStorage 插件为你提供了使用这些 API 的跨平台方式。
对于不是简单键值对的更大数据集,你需要一个可查询的数据存储。对于这种情况,一个非常流行的解决方案是 SQLCipher 数据库。SQLCipher 是一个 SQLite 扩展,它提供了数据库文件的透明 256 位 AES 加密。在写入磁盘之前,页面会被加密,并在读取时解密。由于占用空间小且性能出色,它非常适合保护嵌入式应用程序数据库,并且非常适合移动开发。
如你所见,在保护设备上的数据方面,NativeScript 与原生应用程序框架之间没有区别。你使用 NativeScript 的数据与原生应用程序一样安全,因为你可以使用相同的机制和库来保护它。
在 最近的一项调查 中,大约 80% 的 NativeScript 开发人员表示他们希望保护他们的代码。
这对原生 iOS 和 Android 应用程序来说是正确的。一旦应用程序包被下载,应用程序的源代码就可以被看到。我不会详细介绍如何查看应用程序的源代码,但有足够多的免费工具可以逆向工程并显示代码。由于 Java 和 Objective-C 代码的编译方式存在巨大差异,因此该过程对于 iOS 和 Android 是不同的。
在 iOS 中,阅读代码更难,这个过程稍微复杂一些,但仍然不是不可能。
在 Android 中,额外的安全层由名为 ProGuard 的工具提供。ProGuard 是 Android Studio 的一部分,可以混淆你使用的 Java 代码,使其更难以反向工程,但仍然不是不可能。
在 NativeScript 中,我们使用 JavaScript 作为应用程序语言。由于 JavaScript 是一种解释型语言,因此它在构建过程中不会编译,并且这些文件作为应用程序包的一部分提供。
一般来说,你不应该从服务器下载代码并执行它,因为这很容易成为安全漏洞。
在 NativeScript 中你可以做些什么来保护代码?
上述场景最常用于保护和优化在 Web 上运行的代码的网页。
如果你实现了上述技术,你将实现与 Web 和 Android 原生应用程序中相同的保护级别。
我们可以在 NativeScript 中实现的下一级保护是代码加密。我们已经看到,现在可以使用原生解决方案来加密数据。
我们已经有一个针对代码加密的 POC 解决方案,在下一篇博客文章中,我将深入研究我们正在实验的状态。我们正在寻求社区的意见,以便我们能够使此功能完善。如果你有兴趣今天试用加密插件的 POC,请给我发邮件 ([email protected])
作为 NativeScript 中的额外保护,可以在你的应用程序中添加逻辑,以防止你的移动应用程序执行,如果框架检测到你的应用程序的一部分已被攻击者破坏或修改。想象一下,攻击者下载你的应用程序包并插入代码来绕过身份验证或任何其他逻辑。如果发生这种情况,攻击者可以在已获得 root 权限的设备上运行修改后的应用程序以查找/下载敏感的个人或公司数据。
我们正在考虑在 NativeScript 中实现一个未经授权的应用程序修改功能。为了获得最佳实现,我们希望征求你的反馈。