2009-11-24 287 views
2

我已经得到了一些特殊要求,其中一些关键算法必须在客户端脚本中进行处理,并且要得到保护。使用JavaScript只会暴露该算法。我目前正在评估在客户端脚本上保护算法的方法。欣赏任何建议和替代方法。安全的客户端脚本

我想到的一个选择是将一个小程序下载到本地PC,在其中完成计算并更新结果。在决定之前,我想知道客户端脚本本身是否可以变得安全,因为这会更容易。

在此先感谢!

+6

“安全的客户端”不是一个矛盾吗? – 2009-11-24 16:45:31

+0

定义“有保障”?如果你的意思是防止逆向工程,那是不可能的。 – 2009-11-24 16:50:16

+0

@Martin - 当你把它写成onmoryox时,不是这样,那是完全不同的事情。 – 2009-11-24 16:55:45

回答

4

你不能在客户端PC上保护任何东西。

你在做客户端的一切都是可以破解和可以拖动的。

这就是客户端的PC。它会做客户要求它做的任何事情。

1

底线是,如果有人想要你的逻辑......他们会得到它,除非它是服务器端,他们永远不会以任何方式获得它。

你想要的是一个Javascript obfuscator

+1

没有JavaScript obfruscator可以*保证*任何东西。 – EFraim 2009-11-24 16:42:58

+1

我从来没有说过它可以。因此我的帖子的第一行。 – 2009-11-24 16:43:19

+0

问题是,JavaScript obfruscator会给人一种虚假的安全感 - 事实上只有很少的安全感。 – EFraim 2009-11-24 16:45:27

0

的NPAPI插件将执行的客户端并进行反向工程困难得多....但当然确定,黑客将能够达到通。 ..

+0

真的吗?给我我的调试器。 – EFraim 2009-11-24 16:43:38

+1

@EFraim:但当然你有能力在调试器的情况下进行逆向工程!这就是为什么我说**比例如**要困难得多。混淆或不Javascript。 – jldupont 2009-11-24 16:45:31

+1

小心解释倒票?还是仅仅是一种“没有好理由”的情况? – jldupont 2009-11-24 16:46:21

1

客户端没有任何东西可以完全“安全”。

你让他们下载的任何东西都必须在客户端PC上运行,因此可以进行分析。如果您让他们下载一个applet或一个本机可执行文件,它仍然会包含机器指令,这些指令至少可以在装配级别进行分析。

请问您有没有办法让客户端将数据上传到您的服务器,并在服务器端执行计算?

+0

不幸的是服务器端目前不是一个选项。感谢您分享您的想法。 – Dhurka 2009-11-26 10:40:43

1

它是客户端,那么它不安全。任何关键的安全问题都应该在服务器上完成。

3

脚本不安全,您还需要什么级别的安全性?如果您将任何内容下载到客户端,客户端将能够查看该算法。当然,如果你下载一个原生的dll,然后反编译它会更困难,问题是如果这足够好。

大多数人在评估安全性时忽略了一件重要的事情,那就是百分百安全。因为你的服务器管理员可以进入并从你的服务器上窃取二进制文件。如果您使用第三方托管谁知道谁有权访问服务器。

这个想法是提高酒吧。你想防止平均脚本小子?混淆它,使他们难以理解理解该算法的好处可能无法证明试图理解它的痛苦。

您可以做的最好的做法是将算法保留在服务器上并通过Web服务公开它。

+0

谢谢乔希。我完全同意你,没有什么是100%安全的。我只是不希望脚本非常明显。现在下载本机DLL会更好。再次感谢 – Dhurka 2009-11-26 10:33:16

2

最终用户控制到100%的所有内容都可能被篡改,对于易于暴露的JavaScript尤其如此。

你正在走错路。你需要重新思考你的方法。

2

您可以构建一个包含关键算法的Web服务并从JavaScript调用它。

0

理论上(我的意思是说这是一个Comp.Sci。的意思)这个可能的。密码技术被称为“完全同态加密”。目前,该方法还不实用。没有可用的编译器能够以相同的安全形式转换您的算法。