Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 102 комментария

Александр Туниеков
Александр Туниеков
Как то видел эти советы. Стоит ли шифровать или что-то друое стоит подумать.
Здесь вопрос GNU запрещает шифровать компоненты для MODX или GNU запрещает шифровать модифицированную версию MODX? То есть изменил MODX и стал распространять (продавать) модифицированную версию зашифрованную. Это явно запрещено. А вот шифрование компонентов для MODX не понятно. Лицензия требует предоставлять исходный код основанный на MODX. Это как понимать? Как код включающий код MODX? Или как код использующий инструменты MODX. Как GNU трактуют для кода фреймворков?
Артур Шевченко
Артур Шевченко
На мой взгляд, следует придерживаться единой логики, т.е. если у тебя в каталоге выводятся товары и у каждого товара размеры это просто опции, то и в избранном надо выводить так же, только не показывать те размеры, которые пользователь не добавлял в избранное. Если же размеры ты реализовал через модификации (msOptionsPrice2), то просто добавляй в избранное модификацию и выводи список модификаций.
Николай Савин
Николай Савин
Шифрование исходного кода PHP может быть полезно для защиты интеллектуальной собственности или предотвращения несанкционированного доступа к коду. Однако стоит учитывать, что полная защита исходного кода невозможна, так как PHP выполняется на стороне сервера, и расшифрованный код должен быть доступен для интерпретатора. Тем не менее, вот несколько способов, которые могут помочь затруднить чтение исходного кода:

1. Использование инструментов для обфускации кода

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

PHP Obfuscator: Инструменты вроде PHP Obfuscator или ionCube PHP Obfuscator могут преобразовать код в нечитаемый вид.
YAK Pro: Бесплатный инструмент для обфускации PHP-кода.

Пример использования:
php yakpro-po.php your_script.php -o obfuscated_script.php
2. Шифрование с помощью ionCube или Zend Guard
Эти коммерческие инструменты позволяют зашифровать PHP-код и запускать его с помощью специального расширения на сервере.
  • ionCube: Шифрует код и требует установки ionCube Loader на сервере.
  • Zend Guard: Аналогично ionCube, шифрует код и требует Zend Optimizer.
Пример использования ionCube:

ioncube_encoder your_script.php -o encrypted_script.php
3. Использование base64_encode и eval
Этот метод не является надежным, но может затруднить чтение кода. Код кодируется в base64, а затем декодируется и выполняется с помощью eval.
Пример:

<?php
$code = '<?php echo "Hello, World!"; ?>';
$encoded = base64_encode($code);
eval(base64_decode($encoded));
?>
4. Самописное шифрование

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

<?php
function encrypt($code, $key) {
    return openssl_encrypt($code, 'AES-128-CBC', $key);
}

function decrypt($encrypted, $key) {
    return openssl_decrypt($encrypted, 'AES-128-CBC', $key);
}

$code = '<?php echo "Hello, World!"; ?>';
$key = 'your_secret_key';
$encrypted = encrypt($code, $key);
eval(decrypt($encrypted, $key));
?>
5. Использование PHP-расширений

Вы можете написать собственное PHP-расширение на C, которое будет содержать зашифрованный код. Это требует навыков программирования на C и работы с PHP API.

Важные замечания:

  • Производительность: Шифрование и расшифровка кода могут замедлить выполнение скрипта.
  • Безопасность: Ни один метод не обеспечивает 100% защиту. Злоумышленник с достаточными знаниями и временем может декомпилировать или расшифровать код.
  • Лицензирование: Убедитесь, что использование инструментов шифрования соответствует лицензионным соглашениям
Выбор метода зависит от ваших требований к безопасности, бюджета и уровня сложности, который вы готовы принять.
Николай Савин
Николай Савин
Вот так привязать к шаблонам.

$templates = array(1, 2); 
if(in_array($modx->controller->resource->get('template'), $templates)) {
	$modx->regClientStartupHTMLBlock('<script>Ext.onReady(function() {
if(MODx.loadRTE) MODx.loadRTE("modx-resource-introtext");
});</script>');
};
Вот так выводить для указанных шаблонов, и плюс отдельно для указанных ID.

$templates = array(1, 2); 
$ids = [112, 113];
if(

in_array($modx->controller->resource->get('template'), $templates) 
||  in_array($modx->controller->resource->get('id'), $ids) 
) {
	$modx->regClientStartupHTMLBlock('<script>Ext.onReady(function() {
if(MODx.loadRTE) MODx.loadRTE("modx-resource-introtext");
});</script>');
};
Серый
Серый
Хотелось бы «заклинание» и для шаблонов, а не только для конкретных ресурсов + комбинированно и номера шаблонов, и ресурсов — такой код можно будет считать законченным.
Поторопился я, видимо со своим «ух, класс...»
Подскажите пожалуйста, заранее благодарю!
Николай Савин
Николай Савин
У работы нет стоимости, она у есть у исполнителя.
Соответственно зависит от того, кто будет делать.
Ну, а дальше уже нюансы. Что за файл, откуда он берется. Готовый он или нужно генерировать. Куда, когда отсылать, при каких условиях и т.п.