Вы можете усложнить работу потенциального хакера, загрузив запутанные фрагменты вашего приложения во время выполнения, например, используя MEF. Само собой разумеется, что интересно, если ваше приложение достаточно велико, чтобы это могло ускорить время запуска, а не мешать работе пользователя.
Это не помешает доблестному хакеру получить ваш код (в руке ни один метод не может предотвратить это, так как плагин Silverlight должен уметь его выполнять), но хитрость значительно усложнит его задачу.
предотвращение кеширования браузером XAP бесполезно, как использование HTTPS, поскольку злоумышленнику гораздо проще использовать что-то сложное, например, firebug, чтобы получить XAP, чем искать его в кэше браузера или использовать Man in the Middle Атака.
Я полагаю, что если бы у вас было много мотивации, вы могли бы:
- запутывать каждую сборку
- использовать динамически загруженные XAP
- шифрует динамически загруженный сервер XAP и расшифровывает его на стороне клиента с помощью динамически генерируемого ключа, отправляемого веб-службой (не в том же запросе. И не используйте ключ повторно.)
Это не помешает злоумышленнику получить ваш код, но ему придется проанализировать ваш исходный (запутанный) xap, чтобы понять код дешифрования, получить ключ, получить зашифрованный (тоже обфусцированный) динамически загруженный XAP, расшифровать его , а затем умудриться разблокировать его, затем понять, как он включается в приложение.
Это не то же самое, что использование HTTPS, потому что здесь процесс шифрования и дешифрования выполняется в приложении, так что такие инструменты, как firebug или fiddler, становятся бесполезными.
Хем. Ничто не может помешать кому-либо читать ваш код. НО вы можете сделать это не стоит своего времени. Вам не нужно использовать все идеи здесь, и я уверен, что вы можете найти другие, но убедитесь, что реализация таких мер также стоит вашего времени.
В любом случае, было довольно забавно написать это: p