Должен ли я согласиться написать незащищенный код, если мой работодатель попросит меня сделать это? [закрыто]

24

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

Я ответил, что готов реализовать такую ​​функцию, при условии, что клиенты будут знать о последствиях безопасности при ее использовании.

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

С юридической точки зрения, должен ли я отказаться от реализации такой функции? Правда ли, что мой работодатель может привлечь меня к суду, если клиенту будет нанесен ущерб из-за этой функции, даже если он также знал о проблемах безопасности?


РЕДАКТИРОВАТЬ: Я понимаю, что на этот вопрос можно только надежно ответить от адвоката. То же самое относится и к вопросам лицензирования: люди здесь дают свое понимание и свой опыт, иногда после консультации с юристом, без каких-либо гарантий, что это применимо в другой юрисдикции. Но лицензирование здесь явно принимается в качестве темы, см. Какие вопросы я могу задать здесь? , Я полагаю, что другие программисты могут иметь такую ​​же проблему, и другие, возможно, сталкивались с этой ситуацией раньше, и, возможно, проконсультировались с юристом для этого.

Antoine
источник
2
Вам следует обратиться к юристу - это не то место, где можно получить ответ.
Одед
11
IANAL, но маловероятно, что работодатель сможет успешно подать в суд на сотрудника за то, что он сделал именно то, что ему сказали.
3
@Oded: клиент может подать в суд на компанию, да, и компания все еще может несправедливо обвинять и увольнять сотрудника (в юрисдикции "по желанию"), но я никогда не слышал о том, чтобы клиенты могли подать в суд на отдельных программистов. Компания является юридическим лицом , которое заключило договор купли -продажи, а не работник, так это компания , которая отвечает за вопросы качества в продукте.
8
Что может снизить доверие ваших клиентов к вашим решениям больше, чем хранение пароля в виде простого текста ?! Абсурд. Если ваш начальник попросит вас выкопать его собственную могилу, то просто сделайте это, но убедитесь, что вы получили его в письменной форме по электронной почте, чтобы вы сообщили ему о своем несогласии и предупредили его о возможных последствиях, а также он приказал вам сделать это. сделай это все равно. Держите эту переписку с вами всегда.
maple_shaft
3
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что на юридический вопрос может ответить только адвокат.

Ответы:

11

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

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

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

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

При этом, проконсультируйтесь с адвокатом, Яда-Яда-Яда.

LarsTech
источник
34

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

Landei
источник
6
И распечатайте его / отправьте на внешнюю учетную запись тоже.
Билл Липер
7
Известный как CYA (Cover Your A ..). Однажды я отправил копию нежелательной инструкции на свой личный электронный адрес и отправил ее в юридический отдел компании (у нас была команда по этике, так что это было конфиденциально). Это зависит от того, сколько тепла вы готовы принять и сколько «защиты» вам нужно. Другие вопросы, о которых стоит задуматься, это маркетинг, совет директоров (в высшей степени ответственно), владелец / акционеры. Спросите, "кого больше всего терять"? Это будет ограничивать карьеру, так как вы либо напрасно потратили много времени важных людей, либо заставили своего босса выглядеть плохо
Mattnz
+1 - прикрыть спину. Документируйте свои возражения и рассуждения о том, почему вы думаете, что это плохо. Документируйте ответ вашего менеджера. Распечатайте это и запишите это тщательно на случай, если жара вернется к вам.
Qwerky
CYA, но не будь пассивно агрессивным в этом. Убедитесь, что вы высказали свои возражения НАЗАД вашему работодателю и сохраните это письмо тоже.
Дуг Т.
Просто и понятно - мне нравится этот ответ. Это определенно поможет с юридической ответственностью, однако вам все равно придется принимать этические решения самостоятельно.
stringo0
6

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

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

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

Уайетт Барнетт
источник
3

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

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

Кстати ... это продукт, который я (как потребитель) мог бы использовать? Если так .. что это, так что я могу избежать этого? :)

gbjbaanb
источник
1

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

Вот что я предлагаю:

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

  2. Как профессиональный программист, вы четко указали бы ограничения кода и опасности, связанные с тем, как поддерживать вещи как часть файла README или документации. Если есть документ с требованиями - в предложенном протоколе испытаний и т. Д. Должны быть четко указаны ограничения.

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

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

Дипан Мехта
источник
1

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

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

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

Если вы недовольны последствиями дыр в безопасности, обновите свое резюме и продолжайте, но если это было не ваше решение и не ваша компания, я не могу понять, почему это будет «обвинено» (юридически) на вас ,

amelvin
источник
1
Спасибо за Ваш ответ. Я плохо выразил в своем комментарии. Я не был бы доволен этим конкретным решением, но это не злит меня на компанию или кого-либо еще. Публикация этой информации на сайте вопросов и ответов определенно была бы плохой идеей. Это была бы негативная реклама И очень мало шансов, что она кому-нибудь поможет.
Антуан
Это хорошо, что есть такой форум для вас, чтобы вы могли высказаться - я надеюсь, что все получается хорошо.
Амельвин
1

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

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

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

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

NWS
источник
1

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

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

Билл Липер
источник
Вы же понимаете, что даже Google хранит пароли в открытом виде, верно? Если вы являетесь администратором сайта, вы можете увидеть пароли учетных записей.
Apscience
1
Я так не думаю. Вы не храните пароли. Вы делаете односторонний хэш, который нельзя отменить, и сохраняете его. Это стандартный способ сделать это. Даже недавние взломы, где учетные записи были взломаны, делали это таким образом. Основная проблема заключается в том, что, если кто-то получает хэши и знает, как они были сгенерированы, они обращаются к нему со словарем. Но НЕТ НЕТ НЕТ, вы никогда, никогда, никогда, никогда не храните сами пароли, даже в зашифрованном виде. Просто просить проблемы с этим. Хотите узнать больше. Зайдите сюда: owasp.org/index.php/Main_Page
Билл Липер
Я почти уверен, что Google делает. Если вы управляете приложениями, вы можете найти все пароли своего пользователя. См. Google.com/support/forum/p/Google%20Apps/… , ответ № 4.
Apscience
1
RTFA. Извините, он говорит, что вы можете войти как пользователь. Это метод, при котором пользователь с определенными привилегиями может выдавать себя за другого пользователя. Google ни в коем случае не дает вам пароль другого человека. Вы входите в систему со своими учетными данными, а затем выдает себя за другого пользователя. Это довольно распространенное явление, и это одно из решений моего первоначального комментария, когда босс может захотеть войти в систему под определенным пользователем.
Билл Липер
0

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

Вы шифруете (как всегда, соленый) ключ открытым ключом, хранящимся в двоичном

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

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

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

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

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

Томас Оуэнс
источник
-3

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

mouviciel
источник
Просто следую приказам, сэр. Я так не думаю. Программистов нанимают думать, задавать вопросы, проявлять творческий подход. Это дрянное программное обеспечение, подобное этому, которое подрывает репутацию отрасли и ставит под угрозу нашу личную информацию.
Билл Липер
Мой ответ говорит об обратном: если ваш босс противоречит требованиям, вы можете спокойно обойти босса. Я сомневаюсь, что в случае разоблачения, босс согласился бы, чтобы его приказ был прописан в требованиях.
Mouviciel