我对 silverlight 很陌生,我真的觉得它很酷。我有一个关于它如何在客户端运行代码的问题。
例如,我有一个网站根据用户输入的金额计算一定的金额。这当然我很乐意做客户端。但问题在于,用于计算的公式是专有的并且是商业机密。如果我使用 SL 将这个公式放在客户端,它会安全吗?或者可以反映吗?
我对 silverlight 很陌生,我真的觉得它很酷。我有一个关于它如何在客户端运行代码的问题。
例如,我有一个网站根据用户输入的金额计算一定的金额。这当然我很乐意做客户端。但问题在于,用于计算的公式是专有的并且是商业机密。如果我使用 SL 将这个公式放在客户端,它会安全吗?或者可以反映吗?
如果您想对算法保密,请不要将其推送到客户端。任何形式的混淆或保护都不是完美的。
此外,当您在客户端进行计算时,您应该始终检查服务器上的结果,而不是仅仅假设它们是正确的。假设客户端受到攻击。
Silverlight 将 XAP 文件推送到客户端。XAP 文件只是一个包含 .NET 程序集的 zip 文件,然后可以将其解压缩并反映到该文件中。我工作的公司(PreEmptive Solutions)销售 Dotfuscator,它可以混淆 Silverlight 程序集。现在您必须解压缩 xap、混淆并重新压缩它们,但我们正在努力改进工作流程。
请注意 Dotfuscator 用户:如果创建 Dotfuscator 项目,则必须使用“设置”选项卡中的“用户定义的程序集加载路径”属性浏览到 Silverlight 库。您需要的路径是:
\Program Files\Microsoft SDKs\Silverlight\v2.0\Libraries\Client
或在 64 位操作系统上:
\Program Files (x86)\Microsoft SDKs\Silverlight\v2.0\Reference Assemblies
IntelliLock 和 .NET Reactor(我的首选工具)很好地混淆了我的程序集。
我必须完全同意马库斯的观点。对于优秀的程序员来说,即使是晦涩难懂的 .NET 程序集也很容易阅读。
我的解决方案是使用 WCF 服务进行计算。只需将所有数据推送到那里并给出答案。如果您的公式是最高机密且不明显(例如x+b y+c*z),那么即使有人会获得服务,那么他也很难获得它。
不要陷入认为隐藏算法会保护它的陷阱。一旦你把它放到网上,不管你做什么,都会有人知道的。有了足够的样本数据,任何具有一定数学技能的人都应该能够弄清楚你的算法。
你所能做的就是让它变得更难。如果此算法是您购买的专有软件,那么它将需要在服务器端。将算法放在客户端本质上就是发布它,你可能要承担责任。
另一个很酷的工具是 CodeFort。它有免费版。在http://www.codefort.org上查看它的实际应用
CodeFort .NET 和 Silverlight 混淆器
CodeFort 是用于 Microsoft .NET 和 Silverlight 应用程序的高级混淆器和保护工具。
BAML 和 XAML 混淆器 - 混淆 100% 的代码
CodeFort 是第一个能够在 Silverlight 和 WPF 应用程序中使用的 XAML 和 BAML 代码中混淆标识符的工具。这使得第一次可以混淆 100% 的代码。
针对攻击者的强大保护
将 XAML/BAML 混淆与强大的保护功能(如参考加扰和防篡改 CodeFort)相结合,是一种最先进的混淆工具。
虽然混淆不是一种万无一失的方法,但它会让别人更难看到你的代码。如果混淆层很好的话,一个人必须真正跳过令人费解的圈子才能得到最终的代码。Crypto Obfuscator是一种支持对 Silverlight 程序集进行混淆的混淆器。
有许多公司支持混淆 Silverlight 2.0 应用程序。DeepSea Obfuscator 具有很好的集成体验,Dotfuscator 也可以工作,而且很快,免费的 Eazfuscator 也将支持它。