Нередко попадаются статьи или комментарии людей, которые выполняли какую-то работу - писали программу, делали сайт, продвигали сайт и т.д., и были обмануты клиентами - результаты работы были переданы клиенту, а клиент работу не оплатил. Обидная ситуация, особенно, когда много времени и сил было потрачено на решение задачи.
Мне не раз задавали вопросы, что же делать? Как обезопасить свой труд?
Как же можно обезопасить себя?
По своей личной практике скажу, что я вижу только 2 варианта:
1. Брать 100% предоплаты за работу;
2. Делать закладки в коде и не давать всех ключей клиенту до полной оплаты.
Первый вариант очень спорный и неразумный, поскольку может оказаться так, что, взявшись за работу, не сможешь её выполнить - заболел, возникли какие-то личные проблемы или что-то еще... Со стороны клиента тоже неразумно отдавать 100% суммы в качестве предоплаты за работу, которая может быть не выполненной.
Остается вариант с закладками. Смысл закладки не в том, чтоб что-то поломать, а в том, чтоб не позволить использовать плоды именно Вашего труда - при отказе клиента оплачивать выполненную работу, деактивировать то, что Вы сделали.
Предположим, что Вам заказали решить какие-то проблемы с операционной системой, автоматизировать какие-то задачи. С разработкой сайтов данный способ различий не имеет.
Я решал задачу так: находил какой-то каталог в системе, который точно не будет чиститься никакими чистильщиками, который находится не на поверхности и в котором довольно много файлов или вложенных каталогов. В этом каталоге размещал файл, по названию похожий на системный (например, manifestcon.cfg). В этом файле, вперемежку со всякой чепухой, имитирующей системную информацию, находятся данные для авторизации - логин и пароль. Эти логин и пароль (в виде hash-строки) для авторизации в почтовом ящике.
Скрипт, при запуске, проверяет наличие этого файла. Если файла нет, то дальнейшее не работает. Если файл есть, подтягиваются данные авторизации и скрипт периодически проверяет почтовый ящик. При получении нового письма, сравнивает, например, тему с командным шаблоном - если находится совпадение, то выполняется необходимая операция. Одним из заданных действий может быть такое: если тема совпадает с "Проект для ООО Рога и копыта оплачен полностью", то загрузить с какого-то адреса скрипт, который скачает и заменит файлы с закладками на файлы без закладок и удалит все лишнее - файл manifestcon.cfg и т.д.
Можно поставить иные ограничения - работоспособность до определенной даты или определенное количество дней, месяцев, лет...
При закладках важно использовать 2 принципа:
1. Не навреди! - Грош цена будет Вам, как специалисту, если плод Ваших трудов будет вредить заказчику, нарушать работоспособность его систем, к которым Ваша работа отношения не имеет (если только это не является целью. Помните: вирусописательство и подобная деструктивная деятельность - наказуемые деяния и здесь таковые не рассматриваются).
2. Легкое изъятие всех закладок, если клиент честно с Вами рассчитался.
Вы можете сделать проект без закладок и разместить на некоем ресурсе, для того, чтоб можно было его скачать и установить.
Скачать чистый вариант проекта можно, например, так (с помощью PowerShell):
$download_url = "http://site.ru/file.zip"
$local_path = "C:\windows\temp\file.zip"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($download_url, $local_path)
Expand-Archive $local_path -DestinationPath C:\Unzip\
Ну, а что делать дальше с распакованными файлами - это зависит от Вашего проекта - удалить ненужные файлы, заменить файлы с закладками и т.д.
Если система открыта для доступа из-вне, можно активировать механизм обновления проекта на свободный от закладок, путем, например, проверки наличия файла по какому-то адресу или получения письма с определенной темой. Так же, можно 1 раз в сутки загружать некий файл, в котором будет, к примеру, одна строчка, которая будет либо пустая, либо в ней будет указан адрес для загрузки проекта.
Если система закрыта для доступа из-вне, можно в недрах системных каталогов разместить, например, архив с чистым проектом. Демонстрационный проект может проверять наличие какого-то файла-флага и быть ограниченным по времени, например, в 1-2 месяца, по истечению которых, если не будет обнаружен файл-флаг, проект будет деактивирован автоматически.
Файл-флаг можно прислать заказчику, в случае исполнения им своих обязательств, и объяснить, где его разместить.
Защита труда по продвижению сайта
Если Вы беретесь за продвижение сайта, Вам понадобятся разные инструменты - как минимум это консоль вебмастера и консоль с показателями метрик.
Для проекта продвижения можно создать отдельные аккаунты для необходимых систем и заказчику отсылать только отчеты. При успешном завершении и оплате услуг, передать все данные авторизации заказчику. Для того, чтоб не было разночтений, в договоре сразу и указать эти особенности сотрудничества.
Что касается самого сайта, так ничто ведь не мешает сделать серию резервных копий до начала работы - начальное состояние сайта. Если заказчик не захочет оплачивать работу, можно будет сделать резервную копию сайта со своими изменениями и откатить сайт на начальное состояние. Предупреждение заказчика об откате сайта назад при неоплате работы, обычно подводит заказчика к мысли полного исполнения своей части договора.
Как защититься клиенту?
Еще один важный аспект - защита интересов клиента. Не мало организаций и частных лиц пренебрегаю элементарными мерами защиты, а потом начинают плакать, что какой-то фрилансер их обманул.
Защитить себя (может не полностью, но минимизировать риск потерь) можно с помощью следующих методов:
1. Всегда заключайте договор в письменной форме - даже географическая удаленность этому не помеха.
2. Всегда составляйте четкий проект, с разбивкой по контрольным этапам. Так Вы сможете проверить работоспособность проекта, контролировать его реализацию и с чистой совестью оплачивать каждый этап, если это предусмотрено особенностями проекта или договора.
3. Всегда, по возможности, делайте резервные копии своих данных и реализуемого проекта - в случае проблем, Вы сможете откатить систему до работоспособного состояния. В случае, если исполнитель, по каким-либо причинам, не сможет продолжать или завершить проект, Вы сможете на этот проект пригласить другого исполнителя и завершить, а не делать с самого начала.
Напоследок
Способы защиты проектов зависят от особенностей самих проектов и особенностей взаимоотношений. Не надо пренебрегать защитой своего интеллектуального труда - пока Ваш труд не оплачен, он остается исключительно Вашей собственностью. Всегда учитывайте возможность негатива. Может быть очень обидно, когда Вы трудились несколько дней, недель или месяцев, а Вам говорят, мол, нам кажется, что того, что мы заплатили, вполне достаточно за Вашу работу - на большее не надейтесь.
Надеюсь, что моя статья кому-то поможет не быть обманутым очередным недобросовестным заказчиком или исполнителем.
Давайте будем честны по отношению друг к другу и тогда, возможно, необходимость делать закладки отпадет вовсе (иногда хочется быть немного идеалистом).
А как Вы защищаете плоды своего интеллектуального труда? Поделитесь в комментариях.