Могу ли я защитить свое приложение ASP.NET от декомпиляторов? - PullRequest
2 голосов
/ 19 февраля 2009
  1. Я также знаю, что ASP.NET при публикации может быть скомпилирован
  2. Я знаю, что .NET-приложения компилируются в MSIL, и их легко можно перевести на любой язык .NET с помощью таких инструментов, как .NET Reflector от Red Gate.
  3. Я хочу разработать и доставить сайт ASP.NET, где покупатель будет размещать сайт, но не может получить доступ к коду.

Есть ли способ сделать это?

Ответы [ 14 ]

8 голосов
/ 05 января 2009

По моему опыту, люди, которые запутывают свой код, не создают код, который стоит того.

5 голосов
/ 19 февраля 2009

Скажите им, чтобы не. Вы никогда не остановите решительного реверс-инженера, но если он входит в контракт, вам придется прибегнуть к помощи кого-то, кто извлекает из этого выгоду.

Запутывание делает отладку намного сложнее, не только для вас, но и для ваших клиентов, если они подключаются к вашему коду.

Еще одна причина избежать этого - соблазн проскользнуть, включая «секретные» порты, ключи шифрования или рукопожатия. Вам нужно будет найти совсем другую модель, если у вас есть какая-либо из них в вашем коде.

3 голосов
/ 19 февраля 2009

Это называется "запутывание". Есть коммерческие продукты, которые делают это. Это точно не помешает декомпиляции, но так сильно испортит внутреннюю часть вашей программы, что ее будет сложно сделать головами или хвостами.

Обратите внимание, что он может также нарушить ваш код при особых обстоятельствах, поэтому вам придется поиграть с его параметрами, пока он не заработает.

Dotfuscator является популярным, и урезанная бесплатная версия для сообщества поставляется с Visual Studio (хотя не знаю, какие выпуски).

3 голосов
/ 05 января 2009

Возможно, вам будет легко узнать, что вы на самом деле не публикуете файлы .cs / .vb на веб-сайте, когда публикуете их как dll. Я думаю, что это самый простой блок управления дорогой.

Я понимаю, что вы все еще можете получить код из DLL, но сами исходные файлы не должны быть там.

Преобразуйте ваш веб-проект в веб-приложение и постройте его. На выходе будет dll. Передайте это вместе со всеми медиафайлами (aspx, gif, png и т. Д.), И ваш источник должен быть скрыт от менее усердных людей.

2 голосов
/ 14 ноября 2010

Ознакомьтесь с системой лицензирования Manco .NET . Это обеспечивает функциональность для защиты лицензии, обфускации кода и шифрования кода. Приложение ASP.NET можно защитить несколькими различными способами: используя лицензионные ключи или имя домена из HTTP-запроса (http://mancosoftware.blogspot.com/2010/10/protect-aspnet-application-using-name.html),, например.

2 голосов
/ 12 сентября 2009

Просто идея, но это может быть не ваш случай:

Используйте веб-сервисы в некоторых точках вашего приложения, если это возможно. Распределенный код делает доступной только клиентскую логику для декомпиляции.

1 голос
/ 19 февраля 2009

Вы можете посмотреть в запутывание. Dotfuscator - хорошее место для начала.

1 голос
/ 05 января 2009

Существует способ предварительной компиляции всех файлов aspx / ascx на веб-сайте ASP.NET или в проекте с использованием шаблона проекта Visual Studio:

Читайте здесь в блоге ScottGu: Выпущена поддержка проекта веб-развертывания VS 2008

Компиляция проекта развертывания создает одну сборку для всех ваших файлов aspx / ascx.

Если вы хотите действительно скрыть (сделать нечитабельным) свой исходный код, вам следует использовать профессиональное программное обеспечение для обфускации .

0 голосов
/ 05 января 2009

После публикации в виде библиотеки DLL не забудьте поместить ее (и другие файлы на стороне сервера, например Web.config) в путь, который не обслуживается IIS.

0 голосов
/ 05 января 2009

Когда вы публикуете свой проект в двоичном виде, компилятор создаст DLL (и) в папке bin, и все ваши страницы также будут созданы, но не с кодом, только в одной строке, в которой будет указан файл маркера. Поэтому, когда пользователь просматривает ваш сайт, он просматривает страницы как обычно. Ваши страницы на сервере будут указывать на правильный код в dll

...