我想知道隐藏我们 Silverlight 代码的任何有效方法。我知道有一些混淆器可用,但看起来人们也可以破解它。有人在这方面取得了成功吗?
6 回答
您真的无法隐藏任何传输给客户端的内容。如果人们想弄清楚,他们会的。
您需要将任何专有代码放在客户端机器无法访问的后端。
托管 silverlight 应用程序的页面上的 Pragma No-Cache 将阻止浏览器缓存 xap,而是通过从 Web 服务器流式传输来读取它。这将使窥视者更难获得 xap。混淆会使事情变得更加困难。
还要确保应用程序托管在 https 中,在主应用程序之外进行身份验证。这样,xap 流在下行过程中被编码。
不可以。客户端浏览器必须能够读取代码,因此它是可破解的。
这是一篇关于如何混淆 xap 文件的简短文章
您可以通过在执行期间下载应用程序的混淆片段(例如使用 MEF)来使潜在黑客的工作复杂化。不用说,如果您的应用程序足够大,这样可以加快启动时间而不是妨碍用户体验,这很有趣。
它不会阻止勇敢的黑客获取您的代码(目前没有任何方法可以阻止这一点,因为 Silverlight 插件必须能够执行它),但是这种技巧会使他的任务变得非常复杂。
阻止浏览器缓存 XAP 是没有用的,就像使用 HTTPS 一样,因为攻击者使用像 firebug 这样复杂的东西来获取 XAP 比在浏览器缓存中查找它或使用中间人攻击要容易得多。
我想如果你有很多动力,你可以:
- 混淆每个程序集
- 使用动态加载的 XAP
- 使用由 web 服务发送的动态生成的密钥加密动态加载的 XAP 服务器端并在客户端解密它(不在同一个请求中。并且不要重用密钥。)
它不会阻止攻击者获取您的代码,但他必须分析您的初始(混淆)xap 以了解解密代码,获取密钥,获取加密(也混淆)动态加载的 XAP,解密它,然后管理去混淆它,然后了解它是如何将自己插入应用程序的。它与使用 HTTPS 不同,因为这里的加密和解密过程是在应用程序中完成的,因此像 firebug 或 fiddler 这样的工具变得毫无用处。
下摆。没有什么可以阻止任何人阅读您的代码。但是你可以让它不值得他花时间。您不必在这里使用所有想法,我相信您可以找到其他想法,但请确保实施这些措施也值得您花时间。
无论哪种方式,写这个都很有趣:p
你不能隐藏(至少不是不重要的)XAP 文件。但是你可以混淆它们。混淆不是一个明确的答案,但它是一个开始并且可以提供很好的保护。