Как защитить приложения?

Мой босс дал мне задание выяснить, как можно защитить веб-приложение, разработанное в .NET. По соглашению продукты, разработанные в нашей компании, являются активом компании, и даже не разработчики могут получить доступ к коду. Но мой босс по-прежнему хочет знать, как он может защитить продукты в случае, если разработчик украдет код и попытается запустить его из своего дома?

Пожалуйста, расскажите, как это можно контролировать.


person haansi    schedule 19.04.2010    source источник
comment
Итак, просто чтобы уточнить: ваш босс обеспокоен тем, что разработчики (вы, ребята) крадут исходный код и выпускают продукт? Или он обеспокоен тем, что клиенты могут реконструировать продукт? Звучит как первый, но вы можете перепроверить с ним.   -  person Roger Lipscombe    schedule 19.04.2010
comment
Вы здесь ради нескольких дополнительных баллов, которые вы получаете за принятый ответ или за обсуждение? Для него нет смысла принимать ответы, если они на самом деле не являются удовлетворительными.   -  person Tiberiu Ana    schedule 19.04.2010
comment
Скажите своему боссу, что у вас есть более 9000 брандмауэров для его защиты. Если серьезно, то вы абсолютно ничего не можете сделать, а ваш босс требует невозможного, потому что не разбирается в технологиях.   -  person rook    schedule 19.04.2010


Ответы (8)


Если у разработчика есть:

  1. источник
  2. знание того, как взаимосвязаны технические аспекты системы
  3. знание того, чего действительно хотят клиенты, помимо простых технических возможностей

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

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

В конечном итоге именно поэтому защита вокруг подобных вещей написана на юридическом, а не на компьютерном языке.

(Кстати, это дубликат этого вопроса, на который есть отличные ответы - который я, к сожалению, обнаружил только после этого)

person Ruben Bartelink    schedule 19.04.2010
comment
+1 Вы совершенно правы, это юридический вопрос, а не вопрос информатики. На 100% невозможно защитить ваш код таким образом. - person rook; 19.04.2010

Что, если разработчик запоминает код по частям и день за днем ​​перепечатывает его дома. Спросите своего босса, что он с этим сделает? Сбросить память разработчика как в «Людях в черном»? РЖУ НЕ МОГУ. У психоаналитиков есть медицинский термин для обозначения отношения вашего начальника.

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

person Aoi Karasu    schedule 19.04.2010
comment
+1 хороший способ выразиться. Технически вы можете добиться (довольно спорного) предотвращения этого, изолировав разработчиков и предоставив им доступ только к источнику их угла. Но очевидно, что такой образ мышления не приведет к созданию успешной команды, системы или компании ... - person Ruben Bartelink; 19.04.2010

Просто вне моей головы ... вырвите все их USB-порты, приводы компакт-дисков и отключите их Интернет.

person mpen    schedule 19.04.2010

Вы не можете защитить исходный код.

Любой достойный разработчик точно знает, как воспроизвести то, что он написал. Он тот, кто сделал это, поэтому он может сделать это снова.

Единственное, что вы можете сделать, - это юридически защитить свои продукты патентами и авторскими правами.

person Community    schedule 19.04.2010

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

person MAS1    schedule 19.04.2010

Легализовать, и это все, что вы можете сделать.

person KMån    schedule 19.04.2010

Правильно используйте программное обеспечение для управления версиями (оно встроено в Visual Studio Team System). Затем вы должны знать, у кого есть код.

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

person David Neale    schedule 19.04.2010
comment
(Не -1er) Можете ли вы объяснить, как это помешает кому-либо запустить код или предоставить что-либо полезное для кого-либо? - person Ruben Bartelink; 19.04.2010
comment
(-1er) Использование SCM - отличный совет, но он не поможет с кражей кода - по определению разработчикам необходимо получить исходный код и собрать проект локально (в общем случае). - person Tiberiu Ana; 19.04.2010
comment
Согласовано - тот, у кого есть доступ, всегда сможет его забрать (в конце концов, код - это просто текст). Контроль версий предотвратит доступ к коду сторонних разработчиков и, как я уже сказал, создаст контрольный журнал доступа разработчиков. - person David Neale; 19.04.2010
comment
0: Это относительно очевидно. Считаете ли вы, что такой контрольный журнал (чего, SCM GET? - они обычно не регистрируются) действительно будет полезной частью юридической атаки или защиты? На самом деле это не имеет смысла. В конце концов, это не ответ на вопрос, если вы не объясните мне лучше. - person Ruben Bartelink; 19.04.2010
comment
Я не знал, что GET не будут проводить аудит - если так, то я согласен, что SCM принесет мало пользы в этой ситуации. Если нет, то, хотя он и не станет основой каких-либо юридических доказательств, он может помочь фактическому расследованию и привести к приемлемым доказательствам. - person David Neale; 19.04.2010

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

Достаточно сложно «защитить» распространяемый код .NET, но я думаю, что (почти) невозможно защитить код от ваших собственных разработчиков.

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

person Tiberiu Ana    schedule 19.04.2010
comment
Но как насчет человека, выступающего в роли концентратора? - person Riho; 19.04.2010
comment
По окончании проекта его или ее должны будут застрелить. - person Polyfun; 19.04.2010
comment
Как я уже упоминал в одном из других комментариев, накладные расходы, связанные с кодификацией вашего недоверия к разработчикам подобным образом, вряд ли перевешивают затраты. И все, что им нужно сделать, это зайти в SO или Twitter, и они выяснят, кто работает в их команде, найдя людей, которые задают вопросы о том, как выполнить работу в команде разработчиков, которым не доверяют. Погодите - как ОП был доверен, чтобы быть на SO: P - person Ruben Bartelink; 19.04.2010