Подтвердить что ты не робот

Является ли фрилансером ответственность за плохой код, который он унаследовал от кого-то еще?

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

Так, например, если клиент попросил меня создать страницу регистрации с ограниченным бюджетом, я делаю это повторно с использованием системных объектов доступа к данным, которые не препятствуют внедрению SQL, и я предоставляю страницы с помощью системы View Objects которые не дезактивируют код для XSS.

Если в более поздний момент хакер использует эти нарушения безопасности на странице регистрации, могу ли я привлечь к ответственности? Я никогда не просил переписать системы Data Access Objects или View Objects. И поскольку клиент находится на ограниченном бюджете, они не будут платить мне, чтобы написать новый DAO или View для системы. Так ли это автоматически становится моей ошибкой в ​​тот день, когда я решил наследовать такой катастрофический проект?

А что, если есть другие части системы, которые я редко касался? Возможно, я добавил изменить текст в представлениях или добавил новый оператор if в контроллере. Как только я "коснулся" чего-то, значит ли это, что я несу ответственность за весь модуль, пока не уйду из проекта?

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

Здесь есть два отдельных вопроса:

Как вы защищаете себя в этой ситуации?

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

Как вы правы клиентом в этой ситуации?

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

Почему впереди? Потому что иначе вы получите автомеханический синдром, где вы возьмете в своей машине, и механик говорит: "О, кстати, мы нашли эту проблему здесь", и вы чувствуете себя неловко, потому что не уверены, действительно ли это или нет, Но если вы попросите механика дать ему хороший ход повсюду, по крайней мере, вы будете чувствовать себя более комфортно, если он что-то найдет.

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

Ответ 4

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

Ответ 5

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

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

Я определенно не сказал бы, что вы несете ответственность за это, но было бы не очень профессионально ничего не говорить об этом.

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

Ответ 6

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

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

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

Ответ 7

Spec It Out

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

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


Сценарий наилучшего случая

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


Сценарий наихудшего случая

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