这是 Kerri Shotts 的 PhoneGap Google Group 中我最喜欢的答案之一。我喜欢它,因为她概括了我对此事的想法,但比我更有说服力:
并不真地。是的,你可以混淆它,但我可以解码它。您可以对其进行加密,但这意味着密钥在您的代码中某处,这意味着我也可以对其进行解密。一旦我有了设备和你的位,我就可以用它们做任何我想做的事情。
请记住:设备和操作系统不是为了保护应用程序免受用户的侵害。它可以保护您的用户免受您的应用程序的影响。与安全完全不同的一面。
请记住,这在很大程度上适用于原生应用程序。给我一个 Java 或 ObjC 程序,我也可以很容易地弄清楚它的功能。此外,在大多数平台上,所有的图形资源都只是普通文件,这意味着它们很容易被复制。
这就是为什么有这么多盗版/克隆应用程序的原因。最终,只要我对您的软件有所了解,您就无能为力。你所能做的就是让它对用户来说“更难”——而“硬度”的水平与让用户“更难”所需的努力成正比(如果不是指数的话)。也就是说,如果你做到了让90%的用户都无法破解系统,那就是强化应用程序的一个难度;然后让它让 99% 的人无法破解它需要在编程难度上有一个显着的飞跃。
当然,您可以在读取加密 www/ 文件夹的本机代码中创建动态解密例程。如果您想这样做,请继续。(黑客仍然可以绕过它。有/总是/一种方法。)我愿意走那么远吗?没有。这不值得我花时间或精力,尤其是当它不能保护我免受那些真正有兴趣打击我的人的伤害时。[另一个问题:PG应该这样做吗?不。只是安全专家,大多数开发人员都不是。]
我是否对安全持悲观态度?是的。如果您分发这些位,您将失去安全性。因此,如果您需要应用程序的工作非常安全,那么这些工作应该在设备外的非常安全的服务器上位于几个非常安全的防火墙后面,并且知道中间有多少安全性以确保没有人能猜到该应用程序甚至如何对此服务器进行身份验证。
我这么说只是因为我认为大多数应用程序担心 www/ 文件夹是可见和暴露的事实是不值得的。到目前为止,我想说的是,对于 99.99% 的应用程序来说,这是真的。除非您在医疗保健(并记录敏感信息)或政府或银行(与实际银行合作)工作,否则您无需担心。如果你是,你应该使用PG吗?此外,您是否应该使用移动设备?在我看来,最好是一个客户端代码很少并且本质上是一个黑盒子的 webapp。