我不太明白Silverlight代码在浏览器中的工作原理。程序集是否已下载到客户端计算机?是否有可能使用Reflector或类似工具对代码进行反编译?如果是这样,有什么选择来保护代码? .net混淆器可以与Silverlight一起使用吗?

有帮助吗?

解决方案

要查看Silverlight应用程序,客户端下载包含dll和一个配置xml和可选资源的.xap文件。 dll包含在客户端计算机的Silverlight运行时中运行的已编译c#代码。 Silverlight运行时基本上是完整的.net运行时的子集。所以关键是用户获取dll中的代码然后可以使用工具来获取原始源代码。所以最多你可以做的就是混淆。仍然是非常关键的代码,不应该是选项。如果它满足您的需求,您可以使用其他方式(WCF或其他Web服务隐藏您的代码的某些部分)。

其他提示

每当您使用Web浏览器时,所有客户端代码都会下载到计算机上,并且可由用户进行检查。这适用于Javascript,Flash和Silverlight。

如果您拥有绝对必须隐藏的专有代码,那么您需要将其放在服务器上并公开客户可以调用的API以向用户显示信息。

如果你想看看在silverlight应用程序中查看代码是多么容易,只需运行SilverlightSpy FirstFloor 的链接文字。只要您安装了 .NET Reflector ,您就可以看到(如您与应用程序交互)所有源代码,包括xaml文件。

由于代码确实已下载到客户端(甚至尝试使用pragma no-cache 无法工作,因为它们可以访问URL)您需要通过在服务器上保留重要逻辑来保护您的代码。

如果你害怕有人会窃取你的知识产权并且法律还不够,那么你需要混淆你的代码。但我不会说这种保护,而是对休闲逆向工程师的威慑。

使用编译指示-No Cache-将阻止.xap存储在计算机上,而是由Silverlight插件进行流式处理。如果没有编译指示,.xap文件将存储在临时Internet文件中。

将应用程序放在https上的页面上将进一步保护.xap

的传输

如果可能,需要身份验证才能查看网页/ .xap文件(感谢Joel)

埃默拉尔,

是的,SL应用程序可以进行模糊处理。

是的,Silverlight xap文件只是包含程序集的zip文件,所以它们需要通过模糊处理来保护。尝试加密混淆器 - 它直接混淆xap文件,它也可以混淆XAML程序集中的文件重命名类引用,删除注释,空格,换行符等

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top