我想知道是否有一种有效的方法来隐藏我们的Silverlight代码。我知道有一些混淆器可用,但看起来人们也可以通过破解。有人在这方面取得了成功吗?
你真的无法隐藏任何传输到客户端的内容。如果人们想要弄清楚,他们会做到。
你需要将任何专有代码放在后端,以防止客户端机器接触到它。
在托管Silverlight应用程序的页面上使用Pragma No-Cache将防止浏览器缓存xap文件,而是通过从Web服务器流式传输来读取它。这将使获取xap文件更加困难。如果进行混淆,将会更加困难。
另外,请确保应用程序托管在https中,在主应用程序之外进行身份验证。这样,xap流在下载时就被编码了。
这并不能防止攻击者获取您的代码,但他必须分析您的初始(混淆的)xap以了解解密代码,获取密钥,获取加密的(也是混淆的)动态加载XAP,解密它,然后设法取消混淆它,然后理解它如何插入应用程序。
这与使用HTTPS不同,因为在应用程序中完成加密和解密过程,使得像Firebug或Fiddler这样的工具变得无用。
呃,没有什么可以阻止任何人阅读您的代码。但是您可以使其不值得他的时间。您不必使用此处的所有想法,我相信您可以找到其他想法,但请确保实施这些措施也值得您的时间。
无论如何,写这篇文章真的很有趣 :p
你不能(至少不是非常容易地)隐藏XAP文件。但是你可以对它们进行混淆。混淆并不是一个终极解决方案,但它是一个开始,并且可以提供相当好的保护。