10

我对 silverlight 很陌生,我真的觉得它很酷。我有一个关于它如何在客户端运行代码的问题。

例如,我有一个网站根据用户输入的金额计算一定的金额。这当然我很乐意做客户端。但问题在于,用于计算的公式是专有的并且是商业机密。如果我使用 SL 将这个公式放在客户端,它会安全吗?或者可以反映吗?

4

9 回答 9

14

如果您想对算法保密,请不要将其推送到客户端。任何形式的混淆或保护都不是完美的。

此外,当您在客户端进行计算时,您应该始终检查服务器上的结果,而不是仅仅假设它们是正确的。假设客户端受到攻击。

于 2009-01-16T13:09:22.247 回答
3

Silverlight 将 XAP 文件推送到客户端。XAP 文件只是一个包含 .NET 程序集的 zip 文件,然后可以将其解压缩并反映到该文件中。我工作的公司(PreEmptive Solutions)销售 Dotfuscator,它可以混淆 Silverlight 程序集。现在您必须解压缩 xap、混淆并重新压缩它们,但我们正在努力改进工作流程。

于 2009-02-16T18:52:38.323 回答
2

请注意 Dotfuscator 用户:如果创建 Dotfuscator 项目,则必须使用“设置”选项卡中的“用户定义的程序集加载路径”属性浏览到 Silverlight 库。您需要的路径是:

  1. \Program Files\Microsoft SDKs\Silverlight\v2.0\Reference Assemblies
  2. \Program Files\Microsoft SDKs\Silverlight\v2.0\Libraries\Client

    或在 64 位操作系统上:

  3. \Program Files (x86)\Microsoft SDKs\Silverlight\v2.0\Reference Assemblies

  4. \Program Files (x86)\Microsoft SDKs\Silverlight\v2.0\Libraries\Client
于 2009-02-28T09:05:22.160 回答
1

IntelliLock 和 .NET Reactor(我的首选工具)很好地混淆了我的程序集。

于 2009-11-03T18:59:57.743 回答
1

我必须完全同意马库斯的观点。对于优秀的程序员来说,即使是晦涩难懂的 .NET 程序集也很容易阅读。

我的解决方案是使用 WCF 服务进行计算。只需将所有数据推送到那里并给出答案。如果您的公式是最高机密且不明显(例如x+b y+c*z),那么即使有人会获得服务,那么他也很难获得它。

于 2009-02-28T14:01:25.007 回答
1

不要陷入认为隐藏算法会保护它的陷阱。一旦你把它放到网上,不管你做什么,都会有人知道的。有了足够的样本数据,任何具有一定数学技能的人都应该能够弄清楚你的算法。

你所能做的就是让它变得更难。如果此算法是您购买的专有软件,那么它将需要在服务器端。将算法放在客户端本质上就是发布它,你可能要承担责任。

于 2009-02-28T14:33:42.370 回答
1

另一个很酷的工具是 CodeFort。它有免费版。在http://www.codefort.org上查看它的实际应用

CodeFort .NET 和 Silverlight 混淆器

CodeFort 是用于 Microsoft .NET 和 Silverlight 应用程序的高级混淆器和保护工具。

BAML 和 XAML 混淆器 - 混淆 100% 的代码

CodeFort 是第一个能够在 Silverlight 和 WPF 应用程序中使用的 XAML 和 BAML 代码中混淆标识符的工具。这使得第一次可以混淆 100% 的代码。

针对攻击者的强大保护

将 XAML/BAML 混淆与强大的保护功能(如参考加扰和防篡改 CodeFort)相结合,是一种最先进的混淆工具。

于 2010-06-25T01:02:35.533 回答
1

虽然混淆不是一种万无一失的方法,但它会让别人更难看到你的代码。如果混淆层很好的话,一个人必须真正跳过令人费解的圈子才能得到最终的代码。Crypto Obfuscator是一种支持对 Silverlight 程序集进行混淆的混淆器。

于 2009-11-05T09:55:13.443 回答
0

有许多公司支持混淆 Silverlight 2.0 应用程序。DeepSea Obfuscator 具有很好的集成体验,Dotfuscator 也可以工作,而且很快,免费的 Eazfuscator 也将支持它。

于 2009-04-03T13:55:36.790 回答