混淆Silverlight XAP
我想知道任何有效的方法来隐藏我们的Silverlight代码。我知道有一些混淆器,但看起来人们也可以破解。有人在这方面有任何成功吗?
解决方案
否。客户端浏览器必须能够读取代码,因此该代码容易被黑客入侵。
我们真的无法隐藏任何传递给客户端的内容。如果人们想弄清楚,他们会的。
我们需要在客户端计算机无法访问的后端中放置任何专有代码。
托管silverlight应用程序的页面上的Pragma No-Cache将阻止浏览器缓存xap,而是通过从Web服务器流式传输来读取xap。这将使窥视者更难获得Xap。混淆将使它变得更加困难。
还要确保该应用程序托管在https中,并在主应用程序外部进行身份验证。这样,xap流就在下行中进行编码。
这是有关如何混淆Xap文件的简短文章
http://www.rudigrobler.net/Blog/obfuscating-silverlight
我们不能隐藏(至少不是平凡的)XAP文件。但是我们可以对它们进行混淆。混淆不是一个明确的答案,但它是一个开始,可以提供很好的保护。
我们可以通过在执行过程中下载混淆的应用程序片段(例如使用MEF)来使潜在的黑客工作复杂化。不用说,如果应用程序足够大以至于可以加快启动时间而不是阻碍用户体验,那么这很有趣。
它不会阻止一个勇敢的黑客获取代码(手中没有任何方法可以阻止这一点,因为Silverlight插件必须能够执行它),但是这种装饰会使他的任务大大复杂化。
阻止浏览器缓存XAP是没有用的,就像使用HTTPS一样,因为与在浏览器缓存中查找或者在中间攻击中使用Man相比,攻击者使用萤火虫等复杂的东西来获取XAP容易得多。
我想如果我们有很多动力,我们可以:
- 混淆每个程序集
- 使用动态加载的XAP
- 使用Web服务发送的动态生成的密钥对动态加载的XAP服务器端进行加密,并对其进行解密(不在同一请求中。请勿重复使用该密钥。)
这不会阻止攻击者获取代码,但是攻击者必须分析初始(混淆)xap才能理解解密代码,获取密钥,获取加密(也混淆)动态加载的XAP,对其进行解密,然后进行管理进行模糊处理,然后了解它如何将自身插入应用程序。
它与使用HTTPS不同,因为这里的加密和解密过程是在应用程序中完成的,因此像Firebug或者Fiddler之类的工具将变得无用。
下摆没有什么可以阻止任何人阅读代码。但是我们可以使它不值得他花费时间。我们不必在这里使用所有想法,我相信我们可以找到其他想法,但是请确保实施此类措施也值得我们花时间。
无论哪种方式,写这个:p都挺有趣的