Недавно у меня был негативный опыт, когда клиент отказался от счета, но мой посредник уже загрузил наше программное обеспечение и дизайн на клиентский сервер. Клиент оказался известным преступником, и, конечно же, он сменил все возможные пароли сервера.
Тем не менее, я все еще могу получить доступ к админ-панели CMS. К сожалению, оказывается, что мое программное обеспечение очень безопасно. Пробовал SQL-инъекцию, фальсифицировать загрузку изображений и т. Д. Однако я не могу взломать свое собственное программное обеспечение. В любом случае, я готовлюсь подать в суд на этого человека, так что это не проблема .. Я просто думаю сейчас, что, возможно, должен быть какой-то внутренний метод самоуничтожения. Таким образом, в случае аналогичного случая у меня есть возможность убить программное обеспечение.
Моя собственная идея - скрыть какую-то функцию в файлах ядра. Закодируйте его с помощью base64, чтобы это не было очевидно. Так что-то вроде этого:
eval(base64_decode('ZWNobyAnSGVsbG8gd29ybGQhJzs=')); // echo 'Hello world!';
И, в основном, создайте небольшой скрипт, который берет все файлы программного обеспечения, проверяет их chmod и затем удаляет их.
Мои новые версии CMS имеют файловые менеджеры, которые я мог бы использовать для облегчения взлома . Но что делать, если доступ к админ-панели ограничен.
Чтобы быть очень ясным , это предназначено только для программного обеспечения на стадии разработки, на моем личном сервере или клиентском сервере (последняя часть является этически сомнительной.) Так что, если мой клиент должен украсть мое программное обеспечение ... Это не будет включено в коммерческий -програмное обеспечение.
И чтобы быть еще более ясным , мы говорим об этих редких фрилансах. Я считаю вполне логичным, что для работы по контракту такие методы не нужны. Итак, мы говорим об этих Jumprisk-клиентах, только в режиме разработки - когда проект будет готов, тогда, очевидно, это будет очень неэтичный бэкдор, который будет внутри вашего программного обеспечения.
- Этично ли это хорошая идея? (Имея в виду, что, очевидно, я удалю его, когда проект будет выполнен на 100% и все оплачено)
- Ребята, вам когда-нибудь приходилось взламывать собственное программное обеспечение из-за схожих проблем с клиентами?
- Любые рекомендации по этой идее, код и метод мудрый?
- Каковы могут быть возможные недостатки или последствия сценариев самоуничтожения?
Мой вывод по этому
Немного грустно, что все ответы были нацелены на контрактные случаи. Это была моя вина на самом деле, что я не прояснил это в моем вопросе ... просто подумал, что это довольно ясно, что нет смысла в kill-switch ... когда вы защищены контрактом.
Однако, если вы выполняете работу по контракту ... тогда это должно быть указано в контракте - это делает его законным даже внутри собственного сервера клиента. Тем не менее, наличие kill-переключателей на моем личном сервере - дело действительно никому (это то, что я действительно хотел знать).
Я решил сделать скрипт kill-switch для моей CMS. Главным образом, потому что это кажется интересным вызовом. Но также и то, что я мог бы использовать это для моих несогласованных работ, где клиент является другом друга друга. Я, вероятно, не буду использовать это на клиентском сервере, но .. для случаев, когда клиент или некоторые посредники имеют доступ к моему серверу. А мое программное обеспечение украдено или «перемещено без моего ведома», тогда мне не платят, и они ограничивают доступ к программному обеспечению.
Я прочитал много тем здесь, где они рекомендуют отправить предупреждение, а затем снять страницу. Что ж, я увидел в этом проблему, например, когда я имею дело с человеком ... который просто скопирует его куда-то еще (возможно, переименует его и продаст) и скажет мне, что его сняли. И еще, я бы не «выключил сайт», а удалил его. Тем не менее, я думаю, что все еще незаконно получить доступ к моему клиентскому серверу и удалить его. Или, по крайней мере, доступ к нему через бэкэнд, а не через FTP. За это я благодарю всех вас, кто ответил.
источник
Ответы:
Я не юрист. Похоже, у вас уже есть один в целях подать в суд на своего клиента; в то время как у вас его или ее на аванс, я бы порекомендовал получить их совет по этому
На этом сайте есть и другие вопросы, которые касаются «выключателей» и других способов отключения программного обеспечения, за которое разработчик не получил компенсацию. Обычно считается плохой идеей просто встроить его в программное обеспечение «под ключ» (где вы будете его разрабатывать, а затем передавать полные права клиенту), без контракта, предусматривающего такую возможность.
Прежде всего, если в вашем контракте не указано, что вы можете отключить программное обеспечение за неуплату или если у клиента нет никаких прав на программное обеспечение до тех пор, пока платеж не будет получен в полном объеме, вы не можете переключить любой «переключатель выключения» без нарушая договор. В отсутствие каких-либо слов об обратном: «владение - это девять десятых закона», так что это его программное обеспечение, как только он получит владение, и его уничтожение будет похоже на взрыв нового офисного здания, которое вы построили для него, если бы он этого не сделал. не плати за это.
Второй пункт следует; Любой контракт, который вы предлагаете любому клиенту, должен содержать пункт: «Передача интеллектуальной собственности при выполнении контракта» . Это означает, что даже если вы дали ему копию программного обеспечения для использования, пока он не заплатит вам полностью, он не владеет им. Это даст вам право отключить его или любую его копию программного обеспечения по любой причине до получения полной оплаты, потому что она остается вашей, и вы можете делать все, что пожелаете. Теперь он нарушил контракт, а вы - нет, так что ваш адвокат гораздо проще представить дело, а ваш клиент не получает никакой выгоды от его незаконно приобретенных товаров.
Аналогия со строительным подрядчиком гласит: как только строящееся здание может быть защищено от незаконного проникновения, так оно и есть, и подрядчик, как правило, хранит все копии всех ключей от помещения до тех пор, пока работа не будет завершена и не завершена, и Оплата получена в полном объеме. Даже после передачи ключей, если платеж проваливается, он может наложить арест на имущество и, в крайнем случае, вернуть его. То же самое верно и здесь; вы можете дать клиенту ключ для входа в программное обеспечение, но у вас есть «главный» ключ, и он не получит административный доступ, пока вы не заплатите полностью. Если он может войти сейчас и не заплатит вам, вы можете просто «поменять замки» и заблокировать его из программного обеспечения.
Однако вы дали своему клиенту «главный» ключ к программному обеспечению, и он ушел и изменил все блокировки, так что теперь вы не можете войти. Это не так, как это должно работать. Вы по-прежнему можете требовать возмещения убытков, но в то же время ваш кривой клиент может использовать программное обеспечение, скопировать его в другое место (это большая вещь, которая не может случиться с подрядчиком; если он забирает свое здание, ему не нужно беспокоиться о том, что вы сделал точную бесплатную копию для другого лота) и т. д. и т. д. По сути, ваше единственное средство правовой защиты - принудительное осуществление платежа в полном объеме, поскольку вы не можете гарантировать, что вы вернули все копии программного обеспечения. Вы, вероятно, не были бы рады вернуть ваше программное обеспечение, даже если бы вы могли гарантировать, что у него больше нет копий; это скорее обычная работа, которую вы не можете просто обернуть и продать кому-то еще.
Поймите, что независимо от ваших прав на программное обеспечение, его данные принадлежат ему. Вы не можете коснуться этого. Вы можете остановить его доступ к программному обеспечению, которое вы создали, но если вы уничтожите его данные, это все равно, что сжечь его имущество после того, как вы вернули ему здание, за которое он не заплатил. Вы не имеете права на эти данные и должны либо оставить их на своем компьютере без изменений, либо, если доступ к данным невозможен без вашего программного обеспечения, вы должны удалить их из путаницы с вашим программным обеспечением и передать их его в пригодном для использования формате (таком как база данных, потребляемая человеком, или печатные или электронные копии).
источник
В концепции ты прав. Ваше исполнение все неправильно.
Вам необходимо предоставить ему пробные лицензии, срок действия которых истекает. После полной оплаты предоставьте ему окончательную «вечную» лицензию. Все честно и честно.
источник
unlink()
является НЕЗАКОННЫМ». Мне действительно очень нравится твоя идея, я могу приготовить что-нибудь в CRON.unlink
незаконно». То , что люди уже пытались донести, что США, по крайней мере, имеют очень широкие законы о «несанкционированном использовании компьютерных систем»; согласно закону, большинство из нас является преступлением, чтобы размещать ответы здесь, используя рабочие компьютеры. Если у вас нет контракта, дающего вам право на это, удаленное отключение программного обеспечения, работающего на компьютере, которым вы не владеете, почти наверняка будет противоречить этому закону. Независимо от того, было ли украденное вами программное обеспечение украдено или нет, оно вряд ли будет иметь значение, если обвинение является несанкционированным использованием системы, на которой он работает.Нет. Если бы ваши клиенты узнали, вас бы линчевали. Это совсем не безопасно. Кто-то, кто-то, как узнает, как вызвать его, и вдруг у вас возникнет задача связаться со всеми вашими клиентами, чтобы рассказать им об этом и почему они должны сделать экстренное исправление.
Если вы его взломали, вы также открыли себя для уголовного процесса. Я полагаю, у вас есть доказательства, что вы все еще являетесь владельцем сайта? Что у вас есть право на это? Стоимость его бизнеса может быть "астрономической"
Есть приемлемые альтернативы. Поместите водяной знак на сайт, чтобы на каждой странице отображалось сообщение. При оплате вы можете удалить водяной знак.
источник
Это кажется феноменально плохой идеей, которая потенциально может посадить вас в тюрьму.
источник
Пожалуйста, не спрашивайте программистов, спросите юриста. Я бы подумал, что по крайней мере вы захотите включить в свой контракт пункт о том, что у вас есть право делать то, что предполагает ваш вопрос. (Разве пункт «непоправимый вред» некоторых контрактов не позволяет вам получить постановление суда о немедленном закрытии программного обеспечения, пока у суда не будет возможности разобраться с этим?) Я думаю, что постановление суда будет для вас намного безопаснее, чем кодовая бомба (которую можно считать преступной, если суд установит, что у вас нет программного обеспечения, это может быть уничтожение имущества, в США это может подпадать под действие разделов о цифровом шифровании Закона о цифровом тысячелетии и т. д.). представьте себе выигрыш убытков в гражданском суде и все еще осуждение в уголовном суде).
Правила будут различаться в зависимости от того, где вы и ваш клиент живете и работаете, поэтому я действительно думаю, что вам нужен адвокат.
источник
Точно нет. Мало того, что это заставляет вас выглядеть непрофессионально честными, честными клиентами, но я чувствую, что это также наносит ущерб профессии в целом. Инженеры-программисты несут ответственность перед своим клиентом или работодателем, в том числе за предоставление программного обеспечения самого высокого качества. В случае возникновения спора по поводу оплаты или контрактов, существуют соответствующие каналы. Снижение качества вашего программного обеспечения не является подходящим каналом.
Никогда, хотя я никогда не занимался контрактной или внештатной работой. Я всегда был сотрудником более крупной организации (которая в некоторых случаях работала по контракту). Для меня мысль немыслима. Я предпочел бы поставлять программное обеспечение, которым я горжусь тем, что мое имя присвоено, и которого обманывает небольшой процент клиентов, чем снижать качество моего программного обеспечения, а также свои этические обязанности перед пользователями системы.
Не делай этого.
Помимо очевидных этических вопросов, я бы беспокоился о юридических проблемах. Я не уверен, является ли саботаж вашей собственной работы законным, и даже если это так, использование такого подвига может быть недопустимым.
источник
Просто внедрите модуль лицензирования с ограниченными по времени лицензиями, которые отключат программное обеспечение по истечении срока действия. Это хорошо известная практика в индустрии программного обеспечения, и ваши клиенты не должны возражать против этого, поскольку впоследствии вы снимите это ограничение.
Это также может пригодиться, если вы хотите ограничить возможности и предложить различные версии вашего продукта.
Убийственные переключатели имеют слишком много рисков и не стоят того.
источник
Секретная функция самоуничтожения - ужасная идея. Да, вы будете умны и, возможно, будете иметь возможность прикрепить его к ужасному клиенту в будущем, но это доставит вам больше хлопот, чем стоит.
Вам все равно не заплатят за работу, которую вы сделали. Да, другой человек не будет использовать ваш код; но вы все равно будете страдать от отсутствия оплаты. Вы думаете, что какой-нибудь преступник решит заплатить человеку, который однажды уже закрыл их сайт? Они найдут нового чувака, который сделает свой сайт бесплатно.
Использование последовательности самоуничтожения делает вас ответственным за ваши собственные юридические проблемы. В зависимости от юрисдикции вы можете легко увидеть, как вы взламываете / уничтожаете их данные (когда они собирались заплатить и имели множество смягчающих обстоятельств, почему они не платили раньше). Даже если вас не осудят / успешно предъявят иск, вы все равно можете заплатить огромные судебные издержки и иметь гораздо больше проблем, чем стоит.
Что, если какой-нибудь хорошо оплачиваемый клиент просматривает ваш код позже (или у него есть друг из CS, который только что просмотрел его, чтобы сделать небольшую настройку), видит функцию со странной частью base64, похож на что-то подобное, пытается выполнить ее и случайно удаляет веб-приложение (и делает ли это, пока вы в отпуске, так что требуется время, чтобы исправить)? Или повсюду публикует множество публичных отзывов о вас, заявляющих, что вы неэтичны, и оставляете бэкдоры в своей работе? Конечно, вы можете удалить его из готового продукта после того, как они заплатят, но с VCS они могут просматривать старый источник или не хотеть вас на своем сервере после того, как они заплатят (и это будет неуклюжим разговором; да, мне снова нужна учетная запись, потому что у меня нет) убрал секрет самоуничтожения бэкдора).
Что делать, если преступник создает резервные копии своих данных? Вы удаляете их веб-сервер с помощью секретного бэкдора, сайт находится в автономном режиме в течение дня или двух, пока они (или друг) обнаружат функцию бэкдора нарушающей функции и вернутся в режим онлайн.
В будущем попросите людей подписать простой контракт, поэтапно оплачивайте его и не позволяйте коду уйти с сервера разработки и компьютера, которые контролируются только вами, до тех пор, пока вам не заплатят. (Если им нужно, чтобы он был активен до завершения всей работы; убедитесь, что он примерно заплатил за часть кода, которая становится активной). Если они хотят, чтобы работа находилась в стадии разработки, пусть они дадут вам несколько IP-адресов, которые вы откроете брандмауэру для своего сервера разработки (и, возможно, с умным CNAME для
unpaid_work_in_development.example.com
). Не дайте никаких гарантий работоспособности вашего dev-сервера, и если вы получаете больше трафика, чем нужно (например, вы обнаружите, что они перенаправляют много людей на ваш сайт), просто закройте брандмауэр, пока они не заплатят. Если им нужно предоставить контент на ваш веб-сервер, сделайте так, чтобы они либо отправили вам по электронной почте предложения по содержанию, либо создали общую папку для выпадающих сообщений для них, у которых есть права только на запись в небольшое подмножество файлов (под управлением VCS вне Dropbox), которые они может внести значительный вклад в (например, HTML-шаблоны).источник
Вы задали не тот вопрос Надо работать и улучшать не добавление какого-либо удаленного переключателя уничтожения (добавление уязвимости, которую вы или кто-то другой можете использовать), а исправление вашей реальной проблемы, которая была плохим способом организации оплаты и доставки. Похоже, вам нужна лучшая система условного депонирования (или как называется такая концепция, где вы живете).
Не тратьте свое время на выключатель, выясните, где вы облажались в части коммерческой сделки.
источник
Думаю, я бы разработал какой-то механизм лицензирования. Это может быть основано на любом количестве коммерческих или домашних идей и может привести к прекращению работы программного обеспечения после истечения срока действия лицензии. В тот момент, когда система принята клиентом, и он заплатил, вы можете предоставить полную лицензию, срок которой не истекает.
Этот подход также требует одобрения юриста на вашей территории, но имеет то преимущество, что вам не нужно удаленно отключать программное обеспечение, и вы можете заранее предусмотреть, что это является частью системы. Однако мне кажется очень грустным, что вы имеете дело с людьми, которые отказываются платить в первую очередь.
источник
Разве это не называется DRM? Пока вы снимаете «бомбу» при получении платежа, я не вижу никаких юридических проблем с ней. Просто убедитесь, что у вас есть готовый патч, чтобы закрыть задницу и показать, что у вас не было злого умысла.
Это напоминает мне о положении «отравленной таблетки» в уставах некоторых компаний, которые активируются в случае враждебного поглощения.
Разумеется, менталитет, выраженный некоторыми другими авторами здесь, напоминает мне о том, почему на некоторых программистов постоянно вмешиваются. Если бы больше людей помещали такие бомбы в свой код, я думаю, что программисты могли бы получать деньги быстрее, у меня не было бы абсолютно никаких проблем, если бы это было нормой. Люди любят красть тяжелую работу других людей. Период. И если Apple, и др. может DRM, черт возьми, из их вещей, тогда я думаю, что внештатные программисты тоже могут ...
источник
С практической точки зрения, конечно, клиент будет проверять свои журналы, находить запрос на удаление, восстанавливать код из резервной копии, удалять переключатель уничтожения и повторно развертывать.
источник
Детали вашего вопроса ясно дают понять, что это была бы абсолютно ужасная идея. Первый клиент, обнаруживший такой переключатель уничтожения (возможно, после того, как вы его используете и они восстановятся из резервной копии), опубликует переключатель уничтожения и тот факт, что вы включили его в код, который вы ему передали. Ваша репутация будет полностью уничтожена.
И прежде чем вы скажете: «Ну, они были бы тупиком, как они уничтожат мою репутацию?» Рассмотрим следующий сценарий: клиент находится в хорошем положении, но один из его сотрудников берет копию кода. Они увольняют этого сотрудника, он смотрит на код, вычисляет переключатель уничтожения и использует его. Угадай, кто обвиняет? (Подсказка: это вы.)
источник