Экспертиза процесса разработки программного обеспечения

Судебная экспертиза исходного кода на PHP

Исследуем сайты и сервисы на PHP — «1С-Битрикс», WordPress, Laravel, Symfony: что подрядчик написал сам, а что пришло с коробкой, соответствует ли сделанное заданию и когда появились спорные файлы.

Ориентир по стоимости экспертизы
от 100 000 ₽
Ориентир по сроку экспертизы
от 10 рабочих дней
  • Судебные экспертизы
  • Внесудебные исследования
  • Рецензирование заключений
  • Консультации и справки
01 Проверим компетенцию

До оплаты определим, относится ли задача к выбранному виду исследования.

02 Поможем подготовиться

Уточним вопросы и перечень материалов — готовый комплект не обязателен.

03 Работаем с регионами

Принимаем задачи из России, Казахстана и Беларуси. До назначения часть материалов можно передать электронно; по назначенной экспертизе порядок определяет назначивший орган.

04 Сопровождаем результат

Разъясняем методику и выводы, отвечаем на вопросы суда в пределах компетенции эксперта.

О направлении

Подробно о задачах, объектах и методиках

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

Содержание страницы
  1. С какими спорами приходят
  2. Почему исходный код на PHP обычно цел — и почему это не упрощает дело
  3. Чем это отличается от аудита кода и от проверки сайта
  4. Если в проекте не только PHP
  5. Битрикс, WordPress, Laravel: что пришло с системой, а что написал подрядчик
  6. Версия PHP как самостоятельный предмет спора
  7. Что устанавливает эксперт по коду на PHP
  8. Как проверяют соответствие заданию на развёрнутой копии
  9. Как считают объём работ и почему объём не равен деньгам
  10. Если репозитория нет, а всё выкладывали по FTP
  11. Закрытый код и посторонние вставки: как их различают
  12. Если доступы удерживает подрядчик
  13. Какие объекты исследуются на площадке с PHP
  14. Что сохранить, пока площадка не изменилась
  15. Как передать копию сайта и не раскрыть лишнего
  16. Порядок исследования сайта на PHP
  17. Примеры вопросов эксперту по коду на PHP
  18. Форматы работы: суд, досудебная стадия, рецензия
  19. От чего зависят стоимость и срок по проекту на PHP

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

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

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

С какими спорами приходят

Экспертиза уместна, когда спор касается проверяемых обстоятельств: состояния сайта, состава переданных файлов, поведения программы и зафиксированного хода работ. До начала исследования нужно определить версию, площадку и период; иначе предмет останется неопределённым.

Вот с чем приходят чаще всего:

  • подрядчик сдал сайт или интернет-магазин на «1С-Битрикс», WordPress, Laravel или самописном движке, а заказчик считает техническое задание невыполненным;
  • стороны расходятся в объёме: подрядчик считает работой весь каталог сайта, заказчик — только то, что подрядчик написал сам, а не получил вместе с коробочной системой и модулями из каталога;
  • сайт взломали, на страницах появился чужой код, и стороны спорят, чья это зона ответственности;
  • после расторжения договора заказчику передали архив, который не разворачивается: не хватает файлов, настроек или выгрузки базы;
  • подрядчик закрыл часть кода энкодером и после спора отказывается продлевать лицензию, а заказчик не может ни доработать сайт, ни сменить исполнителя;
  • заказчик утверждает, что подрядчик выдал за свою разработку купленный шаблон или чужой модуль;
  • требуется установить, когда появились спорные файлы или страницы, если репозитория нет или стороны спорят о датах.

Если ваш вопрос звучит иначе — например, спор идёт о самом факте публикации на странице, а не о коде, — точнее начать с экспертизы веб-сайтов.

Почему исходный код на PHP обычно цел — и почему это не упрощает дело

PHP-проекты отличаются от типичной поставки скомпилированной программы. Для C++ заказчику могут передать машинный код, а для Java — промежуточный байт-код; восстановленный из них текст не тождествен исходникам разработчика. Браузерная часть на JavaScript также может быть собрана и минифицирована. На PHP-сервере часто сохраняются читаемые файлы приложения с именами и комментариями, но это не гарантирует их полноту и авторское происхождение: часть кода может быть сгенерирована, поставлена в зависимостях или закрыта защитным средством.

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

Архив сохраняют вместе с описанием получения и рассчитанными контрольными суммами. Порядок расчёта приведён ниже.

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

Чем это отличается от аудита кода и от проверки сайта

Три разные работы часто называют одним словом. Разница между ними — в адресате и предмете, а не в глубине.

Аудит кода проводят для владельца системы; его задача — определить, что следует улучшить, по заранее объявленным критериям и с учётом цели аудита. Судебный эксперт отвечает на поставленный вопрос и опирается на применимый проверяемый критерий — например, пункт технического задания или документацию используемой системы. Формулы «код написан плохо» недостаточно: нужно указать конкретное несоответствие и способ проверки.

Проверка сайта как ресурса — тоже другое: там объект — то, что опубликовано по адресу, и вопрос обычно в том, что видел посетитель в конкретный момент. Эти задачи закрывает экспертиза веб-сайтов. Здесь же объект — программное обеспечение и работы по его созданию: соответствие заданию, состав, происхождение, объём. Один и тот же спор нередко требует обеих задач, и тогда их объединяют в одном исследовании, поставив вопросы раздельно.

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

Если в проекте не только PHP

PHP-проект часто включает несколько технологий: серверная часть взаимодействует с браузерным JavaScript, базой данных, веб-сервером и внешними службами. Границы объектов зависят от спорной функции.

Границу проводят до постановки вопросов, иначе объём поручения может выйти за пределы предмета исследования:

  • спор о серверной логике — расчёты, заказы, права доступа, обмен с внешними системами: это как раз тема страницы, которую вы читаете;
  • спор о поведении интерфейса в браузере — вёрстка, динамические формы, корзина на стороне клиента: экспертиза исходного кода на JavaScript;
  • рядом с сайтом работает корпоративная система или сервис на других платформах: экспертиза кода на Java, экспертиза кода на Python;
  • спор касается обмена с учётной системой: он разбирается на странице экспертизы 1С.

Знать язык заранее не обязательно: сведения проверяют по техническому заданию, актам и составу файлов. Если спорная функция затрагивает клиентскую и серверную части — например, расчёт выполняется и в браузере, и на сервере, — в вопросе указывают обе части и исследуют их взаимодействие.

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

Битрикс, WordPress, Laravel: что пришло с системой, а что написал подрядчик

Многие сайты на PHP используют систему управления содержимым — «1С-Битрикс», WordPress, Joomla, Drupal, MODX, — торговую платформу вроде OpenCart или Magento либо каркас разработки: Laravel, Symfony, Yii. К ним добавляют модули, темы и собственный код. Соотношение этих частей устанавливают по конкретному проекту, а не оценивают заранее по размеру каталога.

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

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

Сравнение с эталоном возможно не всегда. Дистрибутив коммерческой системы «1С-Битрикс» нужной версии может быть недоступен; многократно обновлённая установка — не соответствовать одной поставке; каркас разработки задаёт структуру, а у самописной системы эталона нет. Тогда происхождение и историю фрагментов оценивают по репозиторию, документам и иным представленным источникам. Эти данные не отождествляют код с конкретным автором.

Структура зависит от платформы. В «1С-Битрикс» часть решений выносят из ядра, а настройки и шаблоны могут храниться в базе. В WordPress исследуют темы, плагины, конфигурацию и таблицы содержимого. В проектах на Laravel или Symfony сопоставляют собственный код с зависимостями и каркасом. Файл блокировки фиксирует разрешённые версии пакетов и доступные ссылки на их исходные или собранные архивы, но фактический состав проверяют отдельно. Поэтому трудоёмкость определяют после изучения проекта.

Зависимости PHP обычно устанавливает Composer. Файл блокировки содержит разрешённые версии прямых и косвенных пакетов и сведения об источниках. Фактический каталог vendor сопоставляют с ним, а также фиксируют версию и конфигурацию Composer, параметры платформы, сценарии установки и доступные контрольные данные пакетов. Сами библиотеки не считаются собственным кодом подрядчика, но их подбор, интеграция и обновление могут входить в объём работ. Отсутствие файла блокировки ограничивает реконструкцию состава на спорную дату.

Версия PHP как самостоятельный предмет спора

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

Код для PHP 5.6 может отказаться работать на PHP 7: удалены старые расширения, изменена обработка ошибок, часть конструкций больше не поддерживается. В PHP 8 некоторые диагностические сообщения стали предупреждениями, а правила нестрогого сравнения строк с числами изменились. Проявление и запись предупреждений зависят от настроек; изменение результата расчёта может пройти без явного сообщения пользователю. Поэтому отказ связывают не только с кодом, но и с версией и конфигурацией среды.

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

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

Что устанавливает эксперт по коду на PHP

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

  • соответствие реализованного техническому заданию — по каждому проверяемому требованию отдельно, с указанием способа проверки;
  • состав сайта: какая коробочная система и версия использованы, какие модули и темы установлены, что изменено относительно поставки и какой собственный код добавлен;
  • работоспособность заявленной функции на развёрнутой копии и подтверждённые технические причины отказа;
  • достаточность переданного комплекта для развёртывания в заданных условиях и перечень недостающих компонентов;
  • наличие посторонних вставок, скрытых точек входа и защищённых компонентов, а также признаки, отличающие их от штатных механизмов;
  • совпадения между двумя проектами с отдельным учётом коробочной системы, библиотек и сгенерированных файлов;
  • период, к которому относится спорное состояние, — по совокупности источников, а не по одной отметке времени;
  • объём собственного кода в файлах, строках или функциях — с оговоркой, что это ещё не стоимость.

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

Как проверяют соответствие заданию на развёрнутой копии

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

Сайт разворачивают, если материалы позволяют воспроизвести существенные части среды: версию PHP, расширения, веб-сервер, СУБД, права файлов, настройки, фоновые задания и внешние службы либо их заменители. Проект для PHP 7.4 на PHP 8 может отказаться работать по причинам, не связанным со спором, а отдельный дефект — проявиться только в исходной среде. Отличия стенда и недостающие компоненты перечисляют; невозможность развёртывания не приравнивают к дефекту программы.

Результат формулируют как проверяемый факт: требование выполнено, выполнено частично, не выполнено либо его невозможно проверить на представленных объектах. Указывают способ, условия и полученные данные. Существенность недостатка и влияние на приёмку определяет суд. Если язык не влияет на вопрос, подходит экспертиза соответствия работ техническому заданию.

Как считают объём работ и почему объём не равен деньгам

При споре о стоимости сначала определяют, какие части проекта созданы, настроены или интегрированы подрядчиком. Размер каталога сам по себе этого не показывает.

Общее число строк в каталоге не показывает объём собственного кода: туда входят ядро системы, библиотеки Composer, стили и скрипты, переводы, пользовательские файлы и сгенерированные части. Поэтому файлы классифицируют по проверяемым признакам происхождения. Сгенерированные артефакты связывают с исходниками, а неизвестный остаток исследуют отдельно и не признают автоматически кодом подрядчика. Границы классификации обосновывают версией дистрибутива, файлом блокировки и признаками генерации.

Объём в строках, файлах или функциях — технический показатель, но стоимость им не определяется: одна строка сложной интеграции и сто строк однотипной вёрстки несопоставимы по трудозатратам. Стоимость исследуют отдельно — в рамках экспертизы объёма и стоимости работ либо комплексной экспертизы с участием экономиста.

Степень готовности показывает, какая часть заказанного доведена до работоспособного состояния на спорную дату. Этому вопросу посвящена экспертиза степени готовности программного обеспечения.

Если репозитория нет, а всё выкладывали по FTP

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

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

Если спор именно о датах — когда работы фактически велись и укладывались ли они в согласованные сроки, — его разбирает экспертиза сроков и хронологии разработки; здесь датировка нужна для привязки спорного состояния кода к периоду.

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

Закрытый код и посторонние вставки: как их различают

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

Первое — коммерческая защита. В таких проектах, в частности, встречается ionCube PHP Encoder: преобразованные файлы исполняются при наличии совместимого загрузчика, а отдельные продукты используют лицензионные ограничения. Zend Guard характерен для старых проектов и не поддерживает PHP 7. Эксперт устанавливает средство и доступные метаданные защиты, перечень закрытых файлов, связанные функции и условия запуска. Если соответствующий читаемый исходник не обнаружен, фиксируют наличие только защищённой версии; полноту комплекта оценивают отдельно. Восстановление закрытого текста не проводят без отдельного законного основания и проверяемой методики.

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

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

Если доступы удерживает подрядчик

Такая ситуация встречается часто: после конфликта выясняется, что домен и хостинг оформлены на подрядчика, а доступ к панели управления и административной части заказчику не передан.

Экспертиза иска не заменит, но часть неясностей снимет. Эксперт может зафиксировать состав того, что фактически передано, и установить, достаточно ли этого для самостоятельной работы с сайтом: разворачивается ли он из переданного, полны ли настройки, не закрыта ли часть кода энкодером, есть ли в нём привязка к площадке подрядчика — обращения к его серверам, ключи его учётных записей, механизмы удалённого отключения. Сведения о том, на кого оформлены домен и хостинг, эксперт берёт из документов, представленных сторонами или истребованных судом: в общедоступной справке по доменам зоны .RU данные владельца-физического лица не раскрываются, а самостоятельно собирать материалы эксперт не вправе.

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

Какие объекты исследуются на площадке с PHP

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

Код, поставка и площадка

Основной материал — то, из чего сайт состоит и на чём работает:

  • каталог сайта целиком, включая скрытые файлы и файлы настроек;
  • описание зависимостей и файл блокировки версий, каталог установленных пакетов;
  • дистрибутивы использованной коробочной системы, модулей и тем той же версии — для сравнения с поставкой;
  • репозиторий системы контроля версий — чаще всего Git — со всеми доступными ветками, метками и достижимой историей изменений;
  • настройки веб-сервера Apache или nginx и самого PHP: конфигурация, правила обработки адресов, список включённых расширений, версия;
  • выгрузка базы данных MySQL, MariaDB или PostgreSQL: в ней могут храниться настройки, состояние и содержимое, влияющие на поведение сайта.

Следы работы и документы

Материалы, по которым восстанавливают ход событий и устанавливают требования:

  • журналы веб-сервера, FTP и панели управления хостингом за спорный период;
  • журналы ошибок PHP и журналы самой коробочной системы;
  • резервные копии за период до спора — у хостинг-провайдера или у заказчика;
  • техническое задание, приложения, акты, переписка сторон, задачи в системе учёта;
  • лицензии на коробочную систему, платные модули и шаблоны с датами приобретения.

Что сохранить, пока площадка не изменилась

Работающая площадка и полученная с неё копия — разные объекты. До изменений фиксируют доступное состояние сервера, состав файлов, базу, конфигурацию и обстоятельства получения каждого материала.

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

Минимум такой:

  • снимите каталог сайта архивом или специализированным средством копирования с заранее проверенными параметрами; какие файлы, ссылки, права и временные отметки сохранятся, зависит от формата и инструмента. Базу выгрузите способом, обеспечивающим согласованный снимок, либо зафиксируйте пределы согласованности и время операции; снимки файлов и базы синхронизируйте настолько, насколько позволяет площадка;
  • сохраните опись: перечень файлов с размерами и датами изменения на момент снятия. Она нужна, чтобы позже было видно, что именно вы взяли и в каком состоянии;
  • храните архив в зашифрованном хранилище с ограниченным доступом: в нём могут быть пароль к базе, ключи платёжных систем и персональные данные. Не собирайте клиентскую базу «на всякий случай» — объём копии должен соответствовать цели фиксации;
  • письменно запросите у хостинг-провайдера доступные резервные копии за нужные периоды: срок хранения зависит от тарифа и настроек, а старые копии могут заменяться новыми;
  • скачайте журналы веб-сервера, FTP и панели управления за весь доступный период;
  • зафиксируйте окружение: версию PHP, список расширений, версию и настройки веб-сервера — снимком экрана панели управления хостингом или письмом от хостинг-провайдера. Не создавайте для этого новых файлов на спорной площадке: диагностическая страница может раскрыть пути, переменные окружения и секреты; если доступ не ограничить, её сможет открыть любой, кто знает адрес. Сама она также меняет сохраняемый каталог;
  • посчитайте контрольную сумму каждого архива и запишите её отдельно. Она позволяет позднее проверить соответствие файла записанному значению, но сама по себе не подтверждает дату, источник и неизменность до расчёта. В Windows используют Get-FileHash архив.zip -Algorithm SHA256 или certutil -hashfile архив.zip SHA256; в Linux — sha256sum архив.zip, в macOS — shasum -a 256 архив.zip;
  • составьте короткую записку: что именно скачано, с какого адреса и сервера, когда, под какой учётной записью, кто присутствовал.

Фиксацию поручают специалисту, у которого есть полномочия и опыт работы с площадкой: системному администратору, штатному разработчику или сотруднику провайдера. Если безопасного исполнителя нет, не экспериментируйте с работающим сайтом: позвоните по номеру 8 (800) 333-24-09, и мы поможем определить порядок действий. Важно сохранить происхождение и состав материалов, а не оформление отчёта.

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

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

Самостоятельно снятая копия требует проверки происхождения: контрольная сумма подтверждает лишь соответствие файла записанному значению. Определённость повышают независимая копия провайдера и документированный порядок получения. Возможность нотариального обеспечения доказательств зависит от обстоятельств и процедуры; по возбуждённому делу доступно также обеспечение доказательств судом.

Как передать копию сайта и не раскрыть лишнего

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

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

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

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

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

Порядок исследования сайта на PHP

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

  1. Эксперт принимает материалы, фиксирует состав и контрольные суммы, описывает происхождение каждой копии.
  2. Определяет систему, её версию и состав модулей; при возможности подбирает эталонные дистрибутивы.
  3. Сопоставляет каталог с подтверждённой поставкой и выделяет совпавшие, изменённые и отсутствующие в ней файлы.
  4. При достаточных материалах разворачивает сайт в изолированной среде и воспроизводит существенные параметры окружения.
  5. Проверяет каждое требование выбранным способом и фиксирует результат вместе с условиями получения.
  6. Проверяет возможные причины: настройки среды, действия третьих лиц и пользовательские данные.
  7. Формулирует выводы в пределах вопросов, перечисляет ограничения и неустановленные обстоятельства.

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

Примеры вопросов эксперту по коду на PHP

Корректный вопрос называет объект, его состояние или период и проверяемый критерий. Для PHP это может быть адрес площадки и дата получения копии либо конкретный архив с контрольной суммой; критерием служит пункт технического задания или иной указанный документ. В судебной экспертизе окончательный круг вопросов определяет суд, а в других предусмотренных законом процедурах — назначивший орган или лицо. Эксперт действует в пределах специальных знаний и представленных материалов, а при неясности вопроса обращается к назначившему органу; помощь с формулировками возможна до назначения.

Ниже — примеры формулировок; подробные перечни под конкретные задачи собраны на страницах экспертизы качества исходного кода и экспертизы плагиата исходного кода.

  1. Соответствует ли программное обеспечение, содержащееся в архиве с контрольной суммой SHA-256 …, требованиям пунктов … технического задания (приложение № … к договору от …)?
  2. Какая система управления содержимым использована и какова её версия; какие файлы каталога совпадают с подтверждённой поставкой, какие изменены и какие в ней отсутствуют?
  3. Каков объём программного кода в архиве … после отдельного выделения и оценки коробочной поставки, библиотек Composer и сгенерированных компонентов?
  4. Содержится ли в файлах сайта программный код, не относящийся к штатной работе системы управления содержимым и обеспечивающий выполнение произвольных команд?
  5. Имеются ли в файлах архива … и архива … совпадения программного кода; какие из них объясняются общей коробочной системой, библиотеками или типовыми конструкциями?
  6. Позволяет ли комплект, переданный по акту от …, развернуть работоспособную копию сайта; если нет — каких компонентов недостаточно?

Форматы работы: суд, досудебная стадия, рецензия

Форматов несколько, и выбирают их по стадии спора:

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

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

От чего зависят стоимость и срок по проекту на PHP

Стоимость и срок определяют три обстоятельства. Первое — число слоёв: сайт на коробочной системе с двумя десятками модулей требует проверки поставок и изменений каждого компонента. Второе — сохранность окружения: срок развёртывания зависит от файлов, базы, версии PHP, расширений, настроек сервера и внешних служб. Третье — качество истории изменений: даты репозитория сопоставляют с журналами, резервными копиями и документами, поскольку их можно изменить. Кроме того, учитывают объём спорной части, число требований и вопросов, необходимость смежных специалистов. Ориентировочная стоимость судебной экспертизы — от 100 000 ₽, срок — от 10 рабочих дней; точные условия определяются после просмотра материалов.

Для первого обращения архивы не нужны. Назовите программу, опишите спор и перечислите имеющиеся документы и доступы. Позвоните по номеру 8 (800) 333-24-09 или оставьте заявку: мы определим, относится ли задача к нашей компетенции, предложим порядок фиксации и скажем, каких данных не хватает для расчёта стоимости.

Проведение экспертизы по уголовному делу

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

Согласно постановлению Пленума Верховного Суда Российской Федерации от 21 декабря 2010 г. № 28 «О судебной экспертизе по уголовным делам», негосударственными судебно-экспертными учреждениями признаются некоммерческие организации, созданные на основании Гражданского кодекса Российской Федерации и Федерального закона «О некоммерческих организациях» и ведущие судебно-экспертную деятельность согласно своим уставам.

По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган.

В случаях, перечисленных пунктом 5 постановления № 28, когда экспертизу по уголовному делу назначает суд, ему следует мотивировать в определении или постановлении поручение исследования учреждению либо конкретному лицу. Пункт 5 постановления № 28 связывает выбор негосударственного учреждения с невозможностью провести исследование в государственном учреждении, обслуживающем соответствующую территорию: например, из-за отсутствия нужного специалиста, материально-технической базы или специальных условий, либо с отводом компетентных государственных учреждений. Дополнительно учитываются квалификация эксперта, основания для отвода и действующий перечень экспертиз, выполняемых только государственными судебно-экспертными организациями.

Актуализировано
Форматы работы

Стоимость и сроки

Указан предварительный ориентир. Точный расчёт зависит от вопросов, объёма материалов, количества объектов и необходимости выезда. Срок рассчитываем после получения и проверки необходимого комплекта.

По договору

Внесудебное исследование

от 100 000 ₽
от 10 рабочих дней
точная стоимость будет определена после ознакомления с объектом исследования

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

Заказать исследование
Проверка готового заключения

Рецензирование

от 80 000 ₽
10 рабочих дней
точная стоимость будет определена после ознакомления с заключением и приложениями

Итог — письменная рецензия на готовое заключение. Она проверяет исходные данные, методы и выводы, но не отменяет заключение и не заменяет новое исследование объекта.

Передать заключение на проверку
Письменный ответ эксперта

Консультация и справка

от 20 000 ₽
2–3 рабочих дня
точная стоимость будет определена после ознакомления с объектом исследования

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

Описать вопрос
Разбор задачи — без оплаты

Бесплатно определим вид исследования, проверим, нет ли явных пробелов в комплекте материалов, и назовём ориентировочные срок и стоимость. Если уже на этом этапе видно, что задачу решить нельзя, скажем об этом и не будем предлагать полное исследование. Изучение материалов по существу с письменным ответом — платная консультация; её стоимость согласуем до начала.

Получить организационный разбор
Организация исследования

Как строится работа над экспертизой

До начала исследования уточним предмет задачи, состав материалов и формат итогового документа.

  1. 01 Организационный разбор

    Проверяем компетенцию и сообщаем, можно ли провести исследование по поставленной задаче.

  2. 02 Вопросы и материалы

    Уточняем вопросы и сообщаем, каких документов или объектов не хватает.

  3. 03 Экспертное исследование

    Эксперт применяет профильные методики, фиксирует ход работы и обосновывает выводы.

  4. 04 Заключение и пояснения

    Передаём результат и при необходимости разъясняем суду применённую методику и выводы.

Выполненные исследования

Практика по этому направлению

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

Все примеры по направлению
Опубликованный пример
Завершена в декабре 2023 года

Компьютерно-техническая экспертиза качества веб-приложения №146684

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

Арбитражный суд Архангельской областиДело №А05-12316/2022
Участники: ООО "Компания ЭКСПЕРТ",
Открыть описание
Опубликованный пример
Завершена в августе 2023 года

Экспертиза качества и стоимости разработки программы №133626

Заказчик и разработчик спорили о качестве и стоимости программного продукта: компьютерно-техническая экспертиза устанавливала объём работ, соответствие требованиям и наличие ошибок.

Арбитражный суд Архангельской областиДело №А05-12316/2022
Участники: ООО "Компания ЭКСПЕРТ", ИП Антипин А.В.
Открыть описание
Опубликованный пример
Завершена в октябре 2021 года

Экспертиза авторства исходного кода интернет-магазина №109333

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

Арбитражный суд Республики БашкортостанДело №А07-1128/2019
Участники: ООО "КАСКАД-АВТО", ООО "АРТ-МОТОРС ЮГ"
Открыть описание
Опубликованный пример
Завершена в августе 2021 года

Экспертиза фильтра рассылки в программе лояльности в Москве №104276

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

Открыть описание
Опубликованный пример
Завершена в ноябре 2016 года

Экспертиза №28496

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

Арбитражный суд Алтайского краяДело №А03-514/2016
Участники: Алтайское региональное отделение Фонда социального страхования РФ, Администрация Калининского сельсовета Бийского района АК
Открыть описание
В открытом доступе представлена часть выполненных исследований по разным объектам и судебным делам. Сведения, защищённые законом или условиями конфиденциальности, не раскрываются. Чтобы проверить возможность исследования по вашей ситуации, опишите задачу.

Документы организации

Ответы специалистов

Частые вопросы

Практические пояснения о назначении, материалах и использовании экспертного заключения.

Все вопросы по направлению
Когда нужна экспертиза исходного кода на PHP?

Исследование нужно там, где спор упирается в проверяемое состояние сайта, а не только в толкование договора. Типичные поводы: подрядчик сдал работу, а заказчик считает техническое задание невыполненным; стороны расходятся в объёме сделанного; после расторжения договора передали архив, который не разворачивается; на сайте появился посторонний код и обсуждается, чья это зона ответственности; нужно установить, когда появились спорные файлы.

Отдельный повод — проверка чужого заключения. Если по делу уже проведена экспертиза и её выводы вызывают сомнения, разбирают не сайт, а сам документ: полноту описания объектов, происхождение копии, обоснованность выводов.

Не подойдёт экспертиза там, где вопрос правовой: были ли работы приняты, существенны ли недостатки, кто виноват в срыве сроков. Эксперт устанавливает факты, а оценку им даёт суд.

Отдельная страница: Когда нужна экспертиза исходного кода на PHP?
Какие системы и каркасы охватывает экспертиза кода на PHP?

Исследуются проекты на любых распространённых основаниях. Это коробочные системы управления содержимым — «1С-Битрикс», WordPress, Joomla, Drupal, MODX, — торговые платформы вроде OpenCart и Magento, каркасы разработки Laravel, Symfony и Yii, а также самописные движки без внешней основы. Отдельная категория — проекты, выросшие из коробки: система стоит, но переписана настолько, что сравнение с поставкой само по себе становится задачей.

Сопутствующее окружение тоже входит в объект: веб-сервер Apache или nginx, база данных MySQL, MariaDB или PostgreSQL, кеш, очереди, контейнеры. Поведение сайта зависит от них не меньше, чем от кода, поэтому конфигурацию фиксируют и воспроизводят при развёртывании копии.

Знать заранее, что именно использовано, не обязательно: состав определяется по файлам проекта. Для исследования достаточно каталога сайта и выгрузки базы данных; при первом обращении присылать их не нужно.

Отдельная страница: Какие системы и каркасы охватывает экспертиза кода на PHP?
Чем экспертиза кода на PHP отличается от экспертизы сайта?

Разные объекты. Экспертиза сайта отвечает на вопрос, что было опубликовано по адресу и работает ли ресурс: объект — то, что видит посетитель, и состояние на конкретный момент. Такие задачи закрывает экспертиза веб-сайтов.

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

Один спор часто требует обеих задач: зафиксировать опубликованное и разобрать код. Тогда их объединяют в одном исследовании, но вопросы формулируют раздельно — иначе в заключении смешиваются разные объекты и разные методы.

Отдельная страница: Чем экспертиза кода на PHP отличается от экспертизы сайта?
Как отделить работу подрядчика от коробочной системы и модулей?

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

Получаются три группы. Совпавшие с поставкой — не работа подрядчика; сравнение при этом ведут с приведением к единому виду, иначе разница в переводах строк после выкладки по FTP завысит долю подрядчика. Файлы поставки, изменённые на площадке, требуют разбора: правка могла быть согласованной доработкой, а могла быть вмешательством в файлы самой системы, которое её документация запрещает и которое ломает обновления; согласовывались такие работы или нет, устанавливает суд. Файлы, отсутствующие в поставке, — кандидаты в собственный код, но среди них попадаются и скопированные в проект чужие библиотеки.

Такое разделение даёт цифру, и оспаривают обычно её. Поэтому в заключении указывают версию дистрибутива, источник его получения и признаки, по которым файл отнесён к той или иной группе.

Отдельная страница: Как отделить работу подрядчика от коробочной системы и модулей?
Как установить состав библиотек Composer в проекте на PHP?

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

Каталог с установленными пакетами по объёму часто превосходит остальной проект. Считать его работой подрядчика нельзя, но и вовсе игнорировать неверно: подобрать библиотеки и вовремя их обновлять — тоже труд, который оценивается отдельно от строк кода.

Условия использования каждой библиотеки указаны в её описании. Эксперт устанавливает, какая лицензия сопровождает пакет и какие требования она содержит; правовую оценку соблюдения этих условий даёт суд.

Отдельная страница: Как установить состав библиотек Composer в проекте на PHP?
Сайт не работает после смены версии PHP: код или окружение?

Проверяется и то и другое, причём раздельно. Сначала эксперт определяет, под какую версию языка написан код: по используемым конструкциям, по объявленным в описании зависимостей требованиям, по обращениям к функциям, которые в поздних версиях удалены. Затем устанавливает, на какой версии код фактически исполнялся на спорной площадке.

Переходы между версиями меняли поведение существенно. На PHP 7 исчезло старое расширение для работы с базой данных и изменилась обработка ошибок; на PHP 8 обращение к несуществующей переменной или ключу стало предупреждением, а сравнение строки с числом изменило результат — и вот это опаснее всего для спора, потому что не даёт ни ошибки, ни записи в журнале. Поэтому отказ после смены версии — не обязательно дефект кода, а работоспособность на старой версии не означает соответствия заданию.

Вывод формулируется через требование: если версия названа в техническом задании или в договоре на сопровождение, несоответствие ей проверяемо. Утверждение «версия устарела» без такой привязки остаётся оценочным.

Отдельная страница: Сайт не работает после смены версии PHP: код или окружение?
Репозитория нет, выкладывали по FTP: как установить даты?

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

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

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

Отдельная страница: Репозитория нет, выкладывали по FTP: как установить даты?
Можно ли по дате изменения файла установить, когда написан код?

Сама по себе — нет. Время изменения файла хранится в файловой системе и задаётся произвольно штатными средствами, без каких-либо специальных инструментов. Кроме того, на Linux и macOS обычное копирование ставит дату копирования, а в Windows штатное копирование её сохраняет: после смены хостинга у всего каталога нередко оказывается одна и та же отметка, не имеющая отношения к разработке. Обратный случай не лучше: при распаковке архива отметка восстанавливается из него и выглядит достоверной, хотя подтверждает лишь то, что было записано в архив.

Это не значит, что отметка бесполезна. Она принимается как один из признаков и получает вес, когда согласуется с независимыми источниками: записями журналов о загрузке файла, датой резервной копии, в которой он впервые появился, перепиской о передаче работы.

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

Отдельная страница: Можно ли по дате изменения файла установить, когда написан код?
Сайт взломали — можно ли установить, через что и когда?

Обычно да — при условии, что сохранились журналы. Эксперт находит посторонние файлы и вставки, сопоставляя каталог сайта с эталонной поставкой системы и модулей: то, чего в поставке нет и что не относится к работе подрядчика, выделяется в отдельную группу. Затем по журналам веб-сервера прослеживаются обращения к этим файлам и запросы, которыми они были созданы.

Так восстанавливается и способ проникновения: загрузка файла через форму без проверки типа, уязвимость в устаревшем модуле, подбор пароля к административной части, доступ через учётные данные подрядчика.

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

Отдельная страница: Сайт взломали — можно ли установить, через что и когда?
Часть кода закрыта ionCube: что можно исследовать?

Устанавливается всё, кроме содержимого закрытых файлов. Эксперт определяет, какие именно файлы закрыты и каким энкодером — чаще всего это ionCube PHP Encoder, у старых проектов встречается Zend Guard, который на PHP 7 и позже не переносили, — какую долю проекта они составляют, какие функции сайта на них завязаны и что перестаёт работать при истечении лицензии или отсутствии нужного расширения на сервере.

Этого обычно достаточно для спора: заказчик получил работающий сайт, но не получил исходного кода той части, которая закрыта, и не может ни доработать её сам, ни передать другому подрядчику. Факт закрытия и его последствия — проверяемые обстоятельства.

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

Отдельная страница: Часть кода закрыта ionCube: что можно исследовать?
Архив не разворачивается: что установит эксперт?

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

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

Результат формулируется как перечень отсутствующих компонентов с указанием, что именно без каждого из них не работает. Правовую оценку — исполнено ли обязательство по передаче — даёт суд.

Отдельная страница: Архив не разворачивается: что установит эксперт?
Подрядчик удерживает доступы к сайту: чем поможет экспертиза?

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

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

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

Отдельная страница: Подрядчик удерживает доступы к сайту: чем поможет экспертиза?
Заимствование кода на PHP или совпадение из-за коробки?

Вычитанием общего основания. На сайтах, собранных на одной коробочной системе, совпадения неизбежны и сами по себе ничего не доказывают: ядро, стандартные модули, установленные Composer'ом библиотеки, сгенерированные каркасом файлы, результат автоматического форматирования кода — всё это будет одинаковым у независимых разработчиков.

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

Каждое такое совпадение проверяется вручную, а не принимается по проценту сходства, выданному инструментом. Развёрнуто эта задача разбирается на странице экспертизы плагиата исходного кода.

Отдельная страница: Заимствование кода на PHP или совпадение из-за коробки?
Как считают объём работ по сайту на PHP?

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

Полученная величина — технический факт, а не сумма. Строка сложной интеграции с платёжной системой и сотня строк однотипной вёрстки несопоставимы по трудозатратам, поэтому объём сам по себе стоимость не определяет.

Если спор о деньгах, вопрос о стоимости ставят отдельно: его решает экспертиза объёма и стоимости работ, при необходимости с участием экономиста. Расчёт стоимости строят на этих цифрах, но делают его не здесь.

Отдельная страница: Как считают объём работ по сайту на PHP?
Какие материалы нужны для экспертизы кода на PHP?

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

К этому добавляют сведения об окружении: версию языка, список включённых расширений, версию и настройки веб-сервера. Дальше — журналы веб-сервера, FTP и панели управления за спорный период, журналы ошибок, резервные копии до начала спора, репозиторий с полной историей, если он вёлся.

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

Отдельная страница: Какие материалы нужны для экспертизы кода на PHP?
Сайт уже перенесли на другой хостинг — что ещё можно исследовать?

Многое, но с оговорками. Перенос уничтожает не сам код, а следы: журналы прежнего сервера остаются у прежнего провайдера, отметки времени файлов обновляются при копировании, конфигурация нового сервера отличается от спорной. Поэтому первым делом запрашивают у прежнего хостинг-провайдера всё, что он ещё хранит, — резервные копии и журналы удаляются по расписанию.

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

Если прежняя площадка недоступна, эксперт указывает это как ограничение и опирается на другие источники: резервные копии у заказчика, переписку, архивные копии страниц. Вывод о периоде в таком случае формулируется осторожнее.

Отдельная страница: Сайт уже перенесли на другой хостинг — что ещё можно исследовать?
Нужна ли выгрузка базы данных для экспертизы кода на PHP?

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

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

Если в базе есть персональные данные клиентов, объём выгрузки согласуют заранее и по возможности ограничивают таблицами, относящимися к спору. Порядок передачи обсуждается до отправки.

Отдельная страница: Нужна ли выгрузка базы данных для экспертизы кода на PHP?
Как передать копию сайта с паролями и персональными данными?

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

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

Эксперта соглашение о конфиденциальности связывает, стороны — нет: то, что попало в суд, они увидят. Это учитывают при выборе объёма ещё до отправки, а не после.

Отдельная страница: Как передать копию сайта с паролями и персональными данными?
Можно ли заранее оценить перспективу экспертизы кода на PHP?

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

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

Гарантировать заранее содержание будущих выводов нельзя: они зависят от материалов, которые окажутся в распоряжении эксперта, и от поставленных судом вопросов.

Отдельная страница: Можно ли заранее оценить перспективу экспертизы кода на PHP?
Какие вопросы ставят эксперту по коду на PHP?

Годный вопрос называет две вещи: объект и проверяемый критерий. Объект по PHP — это конкретный архив с контрольной суммой либо адрес площадки с датой снятия копии; критерий — пункт технического задания, требование договора или документация используемой системы.

Формулировки вроде «качественно ли выполнены работы» непроверяемы: эксперт вынужден будет подставить собственное представление о качестве, и заключение окажется уязвимым. Не следует также просить эксперта оценить достаточность доказательств или чужого заключения — это функция суда.

Полезно ставить вопросы раздельно: отдельно о соответствии заданию, отдельно о составе и происхождении кода, отдельно о причине отказа. Помощь с формулировками возможна до назначения экспертизы; после назначения вопросы уточняются только через суд.

Отдельная страница: Какие вопросы ставят эксперту по коду на PHP?
Чем судебная экспертиза кода на PHP отличается от внесудебной?

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

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

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

Отдельная страница: Чем судебная экспертиза кода на PHP отличается от внесудебной?
От чего зависят стоимость и срок экспертизы кода на PHP?

Прежде всего — сколько слоёв придётся разделять. Сайт на коробочной системе с двумя десятками модулей требует сопоставления с эталонной поставкой каждого из них, и это самостоятельная работа, которой нет у проекта, написанного с нуля.

Второе — уцелело ли окружение. Если известны версия языка, состав расширений и настройки сервера, копия поднимается за часы; если площадка уже недоступна, воспроизведение среды становится отдельной задачей с неопределённым результатом. Третье — есть ли история изменений: репозиторий отвечает о датах сразу, его отсутствие означает реконструкцию по журналам, резервным копиям и переписке.

Дальше как везде: объём спорной части, число проверяемых требований, количество вопросов и необходимость смежных специалистов. Точные условия определяются после просмотра материалов; ориентир — от 100 000 ₽ и от 10 рабочих дней.

Отдельная страница: От чего зависят стоимость и срок экспертизы кода на PHP?
Как проверить или оспорить заключение по коду на PHP?

Рецензента интересуют не выводы, а то, как эксперт к ним пришёл. Первое — объекты: назван ли конкретный архив с контрольной суммой или адрес и дата снятия копии, описано ли, откуда копия получена. Если объект описан как «сайт заказчика», проверить исследование невозможно.

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

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

Отдельная страница: Как проверить или оспорить заключение по коду на PHP?
Обращение в организацию

Сначала опишите задачу и имеющиеся материалы

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

Описать задачу