混淆 Silverlight XAP

3
我想知道是否有一种有效的方法来隐藏我们的Silverlight代码。我知道有一些混淆器可用,但看起来人们也可以通过破解。有人在这方面取得了成功吗?
6个回答

4

你真的无法隐藏任何传输到客户端的内容。如果人们想要弄清楚,他们会做到。

你需要将任何专有代码放在后端,以防止客户端机器接触到它。


4

在托管Silverlight应用程序的页面上使用Pragma No-Cache将防止浏览器缓存xap文件,而是通过从Web服务器流式传输来读取它。这将使获取xap文件更加困难。如果进行混淆,将会更加困难。

另外,请确保应用程序托管在https中,在主应用程序之外进行身份验证。这样,xap流在下载时就被编码了。


2
但攻击者可以使用Firebug、缓存和启用Https来获取xap文件,无论您付出多少努力,他都看不到,对吧? - Eilistraee

2
不行。客户端浏览器必须能够读取代码,因此它是可被黑客攻击的。

1

1
在执行期间下载应用程序的混淆片段,例如使用MEF,可以使潜在黑客的工作变得复杂。毋庸置疑,如果您的应用程序足够大,这个技巧会加速启动时间,而不会影响用户体验。
这并不能防止英勇的黑客获取您的代码(没有任何方法可以防止这种情况发生,因为Silverlight插件必须能够执行它),但这个技巧会极大地复杂化他的任务。
防止浏览器缓存XAP是无用的,就像使用HTTPS一样,因为攻击者使用像Firebug这样的东西获取XAP比在浏览器缓存中查找或使用中间人攻击更容易。
我想,如果您有很多动力,您可以:
- 对每个程序集进行混淆 - 使用动态加载的XAP - 在服务器端加密动态加载的XAP,并使用由Web服务发送的动态生成的密钥在客户端解密它(不要在同一请求中重复使用密钥)。

这并不能防止攻击者获取您的代码,但他必须分析您的初始(混淆的)xap以了解解密代码,获取密钥,获取加密的(也是混淆的)动态加载XAP,解密它,然后设法取消混淆它,然后理解它如何插入应用程序。

这与使用HTTPS不同,因为在应用程序中完成加密和解密过程,使得像Firebug或Fiddler这样的工具变得无用。

呃,没有什么可以阻止任何人阅读您的代码。但是您可以使其不值得他的时间。您不必使用此处的所有想法,我相信您可以找到其他想法,但请确保实施这些措施也值得您的时间。

无论如何,写这篇文章真的很有趣 :p


0

你不能(至少不是非常容易地)隐藏XAP文件。但是你可以对它们进行混淆。混淆并不是一个终极解决方案,但它是一个开始,并且可以提供相当好的保护。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接