Шифрование исходного кода PHP - эффективность и недостатки - PullRequest
6 голосов
/ 11 октября 2009

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

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

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

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

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

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

Ответы [ 6 ]

7 голосов
/ 12 октября 2009

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

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

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

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

7 голосов
/ 12 октября 2009

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

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

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

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

2 голосов
/ 11 октября 2009

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

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

1 голос
/ 11 октября 2009

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

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

0 голосов
/ 11 октября 2009

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

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

0 голосов
/ 11 октября 2009

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

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