【发布时间】:2011-08-27 17:40:54
【问题描述】:
我有一个 GWT 应用,它部署在应用引擎上。该应用程序基本上是一个考试模拟器。所有考试问题和答案都存储在服务器上的 XML 文件中。我使用 JAXB 解析器来解析 XML 文件并通过 GWT RPC 将对象列表发送到客户端。
我注意到在传输过程中(服务器 -> 客户端),整个数据在 Firebug 中以纯文本形式显示。由于数据(考试问题和答案)是我的知识产权 (IP) 并且我非常重视,因此我担心窃取这些数据非常容易。因此,我试图找到一些方法来进行一些基本的加密并在内容从服务器发送到客户端时对其进行混淆。
在谷歌上搜索后,我遇到了 gwt-crypto 项目,几分钟之内,我就可以得到我想要的确切结果。服务器将加密数据,客户端将对其进行解密。在 Firebug 中,它将以加密格式显示数据,而不是纯文本。
但是,我遇到了一个问题。实施加密/解密后,我注意到我的应用程序不会加载到我公司的网络中,这显然受到防火墙的保护。该应用程序可以在家中完美运行,甚至可以在我手机上的 3G 网络上运行。该应用程序的另一个版本不使用加密/解密,可以在我公司的网络中完美运行。我通过创建 2 个完全相同的应用程序版本来确认这一点,唯一的区别是一个布尔标志,它决定加密/解密是启用还是禁用。
我有以下问题:
达到我想要达到的结果的最佳方法是什么? gwt-crypto 是一个很好的解决方案吗?我可以用任何简单的方法在传输过程中混淆数据。它不一定是复杂的算法。
启用加密/解密的 GWT 应用程序无法在防火墙内运行的可能原因是什么?我真的对此一无所知。
对于这个问题的任何帮助,我将不胜感激。
【问题讨论】:
-
我们很清楚,您知道用户可以通过屏幕截图来捕获您的知识产权。您在哪里尝试保护数据?只是在传输过程中,还是在到达客户端浏览器时?
-
GregS - 我完全理解这一点。我只是想让普通用户感到困难。我只是想在运输途中保护它。他们当然可以达到截屏或重新输入内容的程度,或者查看源代码并将其复制粘贴出来。我只是不喜欢通过 Firebug 或其他此类工具以纯文本形式公开大部分内容的想法。因此,这不是制作 100% 安全系统的问题。如果您有更好的解决方案,我愿意尝试一下。谢谢。
-
对于传输,您将使用 SSL,而不是尝试使用 GWT-crypto 自行推出。
-
你是对的。但是 GAE 不支持自定义域 (AFAIK) 的 SSL,我不想将 myappid.appspot.com 域用于我的应用程序。谢谢。
-
你在潜入兔子洞。您可以做的任何事情都不会让用户无法提取您的数据,而且您可能实施的任何事情都不会让它变得更加困难。例如,我可以使用 Firebug 或 Chrome 开发工具来查看计算的 DOM,并在您的代码解密后提取文本。我认为您高估了“您的”数据对其他人的价值以及您的潜在对手是谁。
标签: google-app-engine gwt encryption