Исходное шифрование PHP – эффективность и недостатки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EDIT: «Шифрование» также значительно увеличивает время выполнения!

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

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

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