English 中文(简体)
银光代码需要保护吗?
原标题:
  • 时间:2008-10-28 17:23:15
  •  标签:

我不太明白Silverlight代码在浏览器内的运作方式。这些程序集会下载到客户端机器吗?有没有可能使用反编译器或类似工具来反编译代码?如果是这样,有什么选项可以保护代码?.net混淆器是否适用于Silverlight?

最佳回答

为了查看Silverlight应用程序,客户端需要下载一个包含dll和一个配置xml和可选资源的.xap文件。dll包含编译好的c#代码,在客户端Silverlight运行时中运行。Silverlight运行时基本上是完整.net运行时的一个子集。因此,用户可以在dll中获取代码,然后使用工具获取原始源代码。因此,最多只能进行混淆。但对于非常关键的代码,这不应该是选项。如果需要,可以使用其他方法(WCF或其他Web服务来隐藏部分代码)来满足您的需求。

问题回答

无论何时你在网络浏览器中,所有客户端代码都会被下载到计算机上,并可以被用户检查。这适用于JavaScript、Flash和Silverlight。

如果您有必须要隐藏的专有代码,则需要将其放置在服务器上,并暴露一个API,供客户端调用以向用户显示信息。

如果您想了解查看Silverlight应用程序中的代码有多容易,只需运行FirstFloor的SilverlightSpy链接文本。只要您安装了.NET Reflector链接文本,您就能够查看所有源代码,包括xaml文件(当您与应用程序交互时)。

由于代码确实会下载到客户端(即使尝试使用Pragma no-cache防止也不起作用,因为他们可以访问URL),因此您需要通过将重要逻辑保留在服务器上来保护代码。

如果您担心有人会窃取您的知识产权并且法律不足以解决问题,那么您需要混淆您的代码。但我不会称之为保护,而是对普通逆向工程师的威慑。

加入“Pragma-No Cache”的指令将阻止.xap文件被储存在机器上,而是通过Silverlight插件进行流式传输。如果没有指令,.xap文件将被储存在暂存的互联网文件中。

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

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

Emrah, (艾姆拉)

是的,对于SL应用程序,混淆是可能的。

是的,Silverlight xap文件实质上就是包含程序集的zip文件,因此它们需要通过混淆进行保护。可以试试Crypto Obfuscator - 它直接混淆xap文件,还可以通过重命名类引用、去除注释、空格、换行符等方式混淆程序集中的XAML文件。





相关问题
热门标签