我不太明白Silverlight代码在浏览器中的工作原理。程序集是否已下载到客户端计算机?是否有可能使用Reflector或类似工具对代码进行反编译?如果是这样,有什么选择来保护代码? .net混淆器可以与Silverlight一起使用吗?
答案 0 :(得分:6)
每当您使用Web浏览器时,所有客户端代码都会下载到计算机上,并且可由用户进行检查。这适用于Javascript,Flash和Silverlight。
如果您拥有绝对必须隐藏的专有代码,那么您需要将其放在服务器上并公开客户可以调用的API以向用户显示信息。
答案 1 :(得分:5)
要查看Silverlight应用程序,客户端下载包含dll和一个配置xml和可选资源的.xap文件。 dll包含在客户端计算机的Silverlight运行时中运行的已编译c#代码。 Silverlight运行时基本上是完整的.net运行时的子集。所以关键是用户获取dll中的代码然后可以使用工具来获取原始源代码。所以最多你可以做的就是混淆。仍然是非常关键的代码,不应该是选项。如果它满足您的需求,您可以使用其他方式(WCF或其他Web服务隐藏您的代码的某些部分)。
答案 2 :(得分:2)
如果您想查看Silverlight应用中的代码是多么容易,只需通过link text运行SilverlightSpy FirstFloor即可。只要您安装了.NET Reflector,您就可以看到(当您与应用程序交互时)所有源代码,包括xaml文件。
由于代码确实被下载到客户端(甚至trying to prevent it with pragma no-cache因为可以访问URL而无法工作),因此需要通过在服务器上保留重要逻辑来保护代码。
答案 3 :(得分:2)
如果你害怕有人会窃取你的知识产权并且法律还不够,那么你需要混淆你的代码。但我不会说这种保护,而是对休闲逆向工程师的威慑。
答案 4 :(得分:1)
使用编译指示-No Cache-将阻止.xap存储在计算机上,而是由Silverlight插件进行流式处理。如果没有编译指示,.xap文件将存储在临时Internet文件中。
将应用程序放在https上的页面上将进一步保护.xap
的传输如果可能,需要身份验证才能查看网页/ .xap文件(感谢Joel)
答案 5 :(得分:1)
埃默拉尔,
是的,SL应用程序可以进行模糊处理。
答案 6 :(得分:0)
是的,Silverlight xap文件只是包含程序集的zip文件,所以它们需要通过模糊处理来保护。试试Crypto Obfuscator - 它直接模糊了xap文件,它还可以通过重命名类引用,剥离注释,空格,换行符等来模糊程序集中的XAML文件。