Вход Регистрация
ruen

Как защитить исходный код PHP, JS, HTML, CSS - обфускация, минимизация, сжатие и шифрование

Иногда требуется скрыть исходный код от просмотра и лёгкого анализа со стороны посторонних. Чаще всего это применимо к некомпилируемым языкам программирования и открытым средствам разметки документов. Так как в случае компилируемых средств, на выходе получается двоичный код, который сложно вернуть в понятный для человека код. Особенно актуальным может быть защита проектов на PHP, JS, HTML, CSS.

kak-zashchitit-ishodnyy-kod-php

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

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

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

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

Можно начать с обфускации - привести код в непонятный вид. Для этого можно использовать лексический анализ языка программирования и представление его в лексемах - это применимо как раз для языка PHP (есть специальная функция token_get_all). Затем эти лексемы анализируются и в зависимости от значения подменяются их именования. По мере обработки кода может формироваться специальный массив исключений - какие функции, переменные и константы не нужно переименовать по каким-либо причинам. Также массивы с правилами исключений могут быть добавлены вручную в настройках обфускатора. В итоге при замене имён должны быть учтены все исключения и будет получен необходимый уровень обфускации. Обфускация в языке JS производится аналогично, но необходимо разработать и использовать свой лексический анализатор языка для выборки конкретных типов конструкции языка. Для HTML, CSS обфускация обычно будет подразумевать переименовывание названия классов в непонятный вид.

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

Минимизация кода может быть применена как следующий этап защиты кода. Она подразумевает удаление всех пробелов и переносов строк там, где это уместно и не навредит работе кода. На выходе будет получен компактный код, который уже сложен в понимании при простом открытии в редакторе. Кроме того, минимизация (или минификация) уменьшает размер файла с кодом, что благоприятно сказывается на скорости загрузки и обработки таких файлов. Этот этап применим к различным средствам разработки: к PHP, JS, HTML, CSS и т.д.

Сжатие или шифрование кода - может быть применено как последний этап защиты. Сжатие может быть выполнено встроенными средствами языка программирования, например, в PHP есть функция base64_encode и обратная base64_decode. Но антивирусы из-за этого могут ошибочно принимать Ваш код за заражённый и будут приходить уведомления от хостера (замечено на некоторых хостингах, например, с антивирусом Virusdie на reg.ru). Согласитесь, такой проект тяжелее распространять, если пользователь будет видеть предупреждения о вирусах, пусть даже ложные. Поэтому можно реализовать собственные средства сжатия или шифрования. Данный этап также актуален для всех средств разработки.

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

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

Стоит ли делать обфускацию - да, если необходимо скрыть исходный код. Но итоговый уровень защищённости будет зависеть от того, как реализована обфускация. На данном ресурсе реализован сервис обфускации - воспользоваться им можно бесплатно онлайн по ссылке "Обфускатор и минификатор проекта онлайн (PHP, JS, CSS, HTML)". Его особенность в том, что можно загрузить и обфусцировать весь проект, выбрать нужные настройки, задать исключения и т.д.

Комментарии (0)
Для комментирования войдите или зарегистрируйтесь.
Оставить заявку

Последние статьи

Популярные разделы

Eqsash (Инструменты)

Приложение для Android - VK LAST USER ID, отучитель от зависимости и т.д.:
Доступно в Google Play

Amessage (Общение)

Вход в веб-версию
Приложение для Android:
Доступно в Google Play

Поделиться

Подписаться

YouTube

Книги

IT-заметки - Простым языком о самом нужном (HTML, CSS, JavaScript, PHP, базы данных, Drupal, Битрикс, SEO, домены, безопасность и другое), PDF, 500 стр.