Шифрование исходного кода PHP - эффективность и недостатки

У меня есть исходный код PHP, который я размещаю в хостинговой компании XYZ. Я использую программное обеспечение для шифрования PHP, такое как Zend Guard или ionCube, чтобы защитить источник от просмотра кем-либо (системным администратором или хакером, взламывающим системного администратора).

  • Насколько легко / сложно для человека, имеющего полный доступ к системе (например, системного администратора или хакера, взламывающего системного администратора), расшифровать исходный код? Я не знаю, как работают программы шифрования, но предполагаю, что они используют какой-то ключ, который должен оставаться на сервере и, следовательно, доступен системному администратору или хакеру. Если вы технически знакомы с инструкциями, не стесняйтесь предлагать объяснения в своем ответе.

  • Замедляет ли использование такого шифрования исходного кода работу сайта? Если кто-то имеет опыт из первых рук или знает от кого-то, кто имеет опыт из первых рук;)

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

Спасибо (за все полезные ответы / комментарии проголосовали)

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


person Chris    schedule 11.10.2009    source источник
comment
Если вы не доверяете своей хостинговой компании, не используйте их. Если вы не доверяете какой-либо хостинговой компании, то будьте сами себе. Если не доверяешь себе ...   -  person Dominic Rodger    schedule 11.10.2009
comment
никого не интересует ваш код   -  person    schedule 11.10.2009
comment
почему ты хочешь сделать это? Паранойя?   -  person Peter    schedule 11.10.2009
comment
@hop на самом деле очень много людей интересуются его кодом. Вы когда-нибудь слышали о коде facebook, который появился в Китае в качестве нового стартапа SNS несколько лет назад? правильный вопрос.   -  person eric    schedule 04.09.2012


Ответы (6)


Схемы шифрования (или кодировщика) пытаются скрыть ваш код как зашифрованный файл. Очевидно, что код должен быть расшифрован во время выполнения, что добавляет ненужные накладные расходы. Некоторые из них также настаивают на том, чтобы хост-система установила специальные процедуры, которые хостеры очень не любят, потому что они не хотят настраивать специальные конфигурации только для вас. Но плохо то, что они содержат семена собственного уничтожения: для запуска на целевом хосте они должны содержать программное обеспечение для дешифрования. Таким образом, если вы его используете, вы доставляете тот самый дешифратор, который необходим для доступа к вашему коду. Вопрос только в том, чтобы найти его; после обнаружения ваш код полностью расшифровывается и раскрывается. Это просто небезопасно.

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

Люди скажут: «Но любой может проверить запутанный код и понять его». Это правда, если у вас крошечное приложение. Если ваше приложение имеет какой-либо масштаб (десятки страниц кода), чрезвычайно сложно понять, что оно делает, когда все имена переменных зашифрованы. Чем крупнее ваш код, тем лучше его защищает обфускация.

Если вы хотите увидеть примеры того, что делает один PHP-обфускатор, см. Наш Thicket PHP Obfuscator .

person Ira Baxter    schedule 11.10.2009
comment
+1 за отличное объяснение. Дело в масштабе - ваше собственное наблюдение или оно где-то задокументировано? - person Chris; 12.10.2009
comment
Это мое наблюдение, но я думаю, что оно широко признано сообществом обратного инжиниринга. Если у вас есть большая, хорошо спроектированная и хорошо документированная программа, ее трудно понять. Существует множество инструментов, которые помогут людям понять необфусцированный код, и большинство людей скажут вам, что эти инструменты на самом деле не так хорошо работают. - person Ira Baxter; 12.10.2009

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

Это процесс, который обычно выполняется интерпретатором PHP автоматически при каждом обращении к вашему скрипту - ваш PHP-скрипт компилируется в формат байт-кода, который затем выполняется. Кодировщики, такие как Zend Guard и ionCube, по сути, делают эквивалентный процесс, только он выполняется один раз, а затем только "скомпилированный" байт-код становится доступным / загружается на сервер.

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

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

person eliego    schedule 11.10.2009
comment
Похоже, это принесет значительный выигрыш в производительности, не так ли? - person Chris Thompson; 12.10.2009
comment
Я не уверен, но я так думаю. Такие продукты, как Zend Optimizer, используют эту технику для повышения производительности, и я не понимаю, почему вы не получите таких же результатов с Zend Guard. - person eliego; 12.10.2009

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

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

person Chris S.    schedule 11.10.2009
comment
Наконец, спасибо тому, кто получил мой вопрос :) Итак, что мне нужно для расшифровки кода и сколько времени это займет? - person Chris; 11.10.2009
comment
Это зависит от; есть сервисы, которые делают это за плату, и есть программа под названием Dezender, которая может расшифровывать файлы. Однако я бы не стал вдаваться в подробности реверсивной инженерии кода. - person Chris S.; 12.10.2009
comment
Есть ли что-то подобное для ionCube. Это для проекта edu, а не для внешнего использования. - person Chris; 12.10.2009

Если его можно выполнить, его можно декомпилировать. Для получения прав доступа, а не для шифрования, придерживайтесь своей юридической команды :) А еще лучше, откройте исходный код для своего проекта: P

РЕДАКТИРОВАТЬ: «Шифрование» также значительно увеличивает время выполнения!

person Al.    schedule 11.10.2009

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

person Gabriel Solomon    schedule 11.10.2009

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

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

person FlorianH    schedule 11.10.2009
comment
Я думал, что те, кто меняют имена переменных и добавляют мусор, были обфускаторами, не так ли? Я думал, что шифровальщики сделали что-то еще, они использовали ключ или что-то в этом роде и якобы лучше справлялись с тем, что они должны делать, не так ли? - person Chris; 11.10.2009