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

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

Так, например, если клиент попросил, чтобы я создал регистрационную страницу на ограниченном бюджете, я делаю настолько снова использующий Объекты Доступа к данным системы, которые не предотвращают Внедрение SQL, и я представляю страницы с Объектами Представления системы, которые не санируют код для XSS.

Если в более позднее время, хакер использует эти нарушения защиты на регистрационной странице, я считаюсь ответственный? Меня никогда не просили переписать системные Объекты Доступа к данным или Объекты Представления. И потому что клиент находится на ограниченном бюджете, они не заплатят мне для записи нового ДАО или Представления для системы. Это автоматически становится моим отказом день, я решаю наследовать такой катастрофический проект?

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

24
задан ire_and_curses 18 December 2009 в 21:23
поделиться

7 ответов

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

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

23
ответ дан 28 November 2019 в 23:23
поделиться

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

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

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

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

1
ответ дан 28 November 2019 в 23:23
поделиться

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

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

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

1
ответ дан 28 November 2019 в 23:23
поделиться

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

14
ответ дан 28 November 2019 в 23:23
поделиться

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

1
ответ дан 28 November 2019 в 23:23
поделиться

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

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

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

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

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

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

Точно так же, если вы получите предварительное согласие. искать такие вещи,

6
ответ дан 28 November 2019 в 23:23
поделиться

DateUtil.parseDate (dateString) из http-компонентов apache

(унаследованные: DateUtil.parseDate (dateString) (из apache commons-httpclient))

Он имеет правильный формат, определенный как константа, который гарантированно соответствует протоколу.

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

0
ответ дан 28 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

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