Защита кода от ее собственных [закрытых] разработчиков

13
задан 5 revs, 3 users 91% 13 July 2015 в 03:14
поделиться

12 ответов

Попробуйте создать команду, которой вы можете доверять.

33
ответ дан 1 December 2019 в 17:10
поделиться

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

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

Чтобы ваши программисты не воровали, вы можете причинить им вред, как только они закончат программу. Метод зарекомендовал себя как наиболее эффективный и используется веками. Например, русский царь Иван Грозный зажег глаза архитектору, спроектировавшему красивый храм на Красной площади, поэтому спроектированный остается самым красивым в истории. Вы можете сделать что-то подобное со своим архитектором. Я слышал, последняя версия Visual Studio содержит некоторые функции ...

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

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

33
ответ дан 1 December 2019 в 17:10
поделиться

Как защитить электростанцию ​​от саботажа со стороны сотрудника? Как вы помешаете боксеру бросить бой? Как вы предотвратите распространение хлопков в публичном доме?

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

16
ответ дан 1 December 2019 в 17:10
поделиться

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

6
ответ дан 1 December 2019 в 17:10
поделиться

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

5
ответ дан 1 December 2019 в 17:10
поделиться

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

Но со всеми этими мерами безопасности ваши разработчики, скорее всего, возненавидят работать с вами и бросят свою работу

4
ответ дан 1 December 2019 в 17:10
поделиться

почти там, просто измените outerWidth: 100%; на ширины: auto; (outerWidth не является свойством CSS)

либо примените к строке следующие стили:

width: auto;
display: block;
-121--861764-

EDIT :

Эти три различных элемента имеют разные правила визуализации.

Поэтому для

таблицы # bar необходимо установить ширину 100% иначе она будет только такой шириной, какой она должна быть. Однако если общая ширина строк таблицы больше ширины bar , она будет расширена до требуемой ширины. ЕСЛИ я помню, что вы можете противодействовать этому, установив дисплей: block! immental; , хотя это было некоторое время с тех пор, как мне пришлось это исправить. (я уверен, что кто-то исправит меня, если я ошибаюсь).

textarea # bar i beleive является элементом блочного уровня, поэтому он будет следовать правилам, аналогичным правилам див. единственное замечание здесь состоит в том, что textarea принимают атрибуты cols и строк , которые измеряются в столбцах символов. Если это указано для элемента, это переопределит ширину, заданную css.

input # bar является встроенным элементом, поэтому по умолчанию его ширину присвоить нельзя. Однако атрибут textarea cols имеет атрибут size элемента, который может определять ширину. При этом всегда можно указать ширину, используя для нее дисплей: block; в css. Затем он будет следовать тем же правилам рендеринга, что и див.

td # foo будет визуализирован как table-cell , которая имеет некоторое безумие. Суть в том, что для ваших целей он будет действовать точно так же, как div # foo , ограничивая ширину своего содержимого. Единственной проблемой здесь будет потенциальный неразрешимый текст в столбце где-то, что заставит его игнорировать вашу настройку ширины. Также все ячейки в столбце получат ширину самой широкой ячейки.


Определяет поведение элемента уровня блока по умолчанию, т.е. если ширина равна auto (по умолчанию), то она будет 100% от внутренней ширины содержащего элемента. так в сущности:

#foo {width: 800px;}
#bar {padding-left: 2px; padding-right: 2px; margin-left: 2px; margin-right: 2px;}

даст вам именно то, что вы хотите.

-121--861763-

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

Файл для этого находится в режиме conf\authz Вот пример

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

[/
# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

Некоторые документы можно найти здесь

В разделе ' Управление доступом по каталогу '

4
ответ дан 1 December 2019 в 17:10
поделиться

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

Следует помнить, что декомпиляция фреймворков, работающих против IL, таких как .NET, относительно проста, поэтому предотвращение доступа к файлам кода не обязательно является серебряной пулей для защиты ИС.

2
ответ дан 1 December 2019 в 17:10
поделиться

Я знаю, что вы сказали "помимо чисто юридического", но я хотел бы добавить, что помимо упомянутого вами юридического, есть еще Non-Compete. По сути, он гласит, что после увольнения вы не сможете конкурировать с бывшим работодателем. Кража кода не так привлекательна, если вы не сможете использовать его в течение года или двух.

1
ответ дан 1 December 2019 в 17:10
поделиться

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

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

1
ответ дан 1 December 2019 в 17:10
поделиться

Разрабатывайте свое программное обеспечение по модулям.

Иметь один общий модуль, содержащий объекты, которые передаются туда и обратно, и служебные классы, которые действуют на эти объекты.

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

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

Также очень доверяйте тому, кто запускает ваш сервер контроля версий. Хотя он стабилен, ни один разработчик не может причинить столько вреда; они не могут удалить все, например, и вы будете точно знать, что они сделали и когда, если это когда-нибудь станет проблемой.

1
ответ дан 1 December 2019 в 17:10
поделиться

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

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

1
ответ дан 1 December 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: