Back-End

29 mai, 2017

Executando scripts PHP codificados com ionCube Loader

Publicidade

Codificar fontes de aplicações é uma prática comum quando o assunto é proteger e/ou licenciar o código-fonte de sua aplicação. Hoje vamos falar sobre o ionCube – uma das soluções mais populares e mais largamente utilizadas para prevenção contra a utilização não autorizada. Por ser orientado ao PHP, o ionCube fornece duas ferramentas correlatas – Encoder, para compilar os arquivos PHP em bytecode, e o Loader, que lida com a execução desses arquivos.

Embora codificar não deva ser um problema para a maioria dos desenvolvedores, executar as aplicações protegidas pode se tornar um ponto de preocupação real para um usuário comum, pois frequentemente requer o envolvimento de módulos ou bibliotecas auxiliares. Dessa maneira, para habilitar a execução do código-fonte PHP protegido sem tropeçar em configurações manuais de servidores, o Jelastic Cloud fornece a instalação leve e dedicada do add-on para instalação em um clique do ionCube Loader.

Então, entre em seu painel de controle do Jelastic com suas credenciais e siga as instruções de como começar a executar scripts codificados em minutos.

Instalação do add-On ionCube Loader

1 – Em primeiro lugar, vamos nos certificar de que você tenha um ambiente PHP apropriado para o processamento de seu código protegido com o inoCube Loader.

Para isso, acesse o assistente de topologia de ambiente (clicando no botão Novo Ambiente – New Environment no topo do painel de controle, ou no ícone Mudar Topologia de Ambiente – Change environment topology próximo a um existente) e mudar para a aba PHP.

Aqui, a escolha do servidor de aplicação depende somente da sua preferência (pois tanto o Apache quanto o NGINX são suportados), mas um pouco mais de atenção deve ser dada à lista de versões do PHP.

Quando selecionar um motor particular, você deve considerar sua compatibilidade com a versão do ionCube Encoder com a qual seus scripts foram convertidos. Como regra geral, os arquivos codificados podem ser processados em versões do PHP que sejam iguais ou superiores à do Enconder – por exemplo, a compatibilidade retroativa completa é fornecida. No entanto, existem algumas exceções.

  • Atualmente, o PHP 7.1 não é suportado.
  • Com o motor PHP 7.0, somente os arquivos baseados em PHP 5.6 podem ser decodificados.
  • Com scripts PHP 5.6 e PHP 5.5, scripts da versão 4 do PHP não podem ser decodificados.

Para confirmar os parâmetros de configuração, clique em Criar ou Aplicar (dependendo de você ter criado um novo ambiente ou ajustado um existente).

2 – Agora, acesse o Marketplace do Jelastic e mude para a seção dos Add-nos conectáveis.

Utilize a caixa de pesquisa para localizar o pacote ionCube e clique em Instalar.

Dica: As fontes do add-on ionCube estão disponíveis dentro da Coleção Jelastic JPS, junto com várias soluções pré-empacotadas (todas podem ser integradas importando um link manifest.jps para o repositório apropriado).

3 – Na janela de instalação aberta, especifique os seguintes detalhes:

  • Nome do ambiente: Ambiente onde a ferramenta ionCube deve ser integrada (encoded-app, no nosso caso);
  • Nós: Servidor de aplicação alvo para a aplicação do add-on (é preenchido automaticamente quando é selecionado o ambiente).

Para prosseguir, clique em Instalar e aguarde um minuto até que o processo esteja completo (você também receberá uma notificação por e-mail).

Nota: Durante a aplicação do add-on, o servidor de aplicação será reiniciado, o que pode causar um tempo de instabilidade temporário para seu serviço (se já tiver algum sendo executado). Para evitar isso, deixe preparados alguns servidores previamente para que eles possam ser iniciados sequencialmente (com um atraso determinado, 30 segundos como padrão).

Agora, vamos verificar se o add-on está funcionando corretamente.

Verificação com o assistente do ionCube Loader

A maneira mais simples de garantir que o ionCube foi integrado com sucesso é revisar o retorno php_info() do servidor – as informações de status e versão estão listadas em um bloco separado abaixo das estatísticas de configuração do servidor principal.

Para uma verificação mais compreensível, você pode acessar um assistente do ionCube Loader dedicado dentro do container apropriado. Ele vai testar a operação apropriada do Loader e fornecer um guia caso algum problema seja detectado. Esse passo é opcional e não afeta a operabilidade do ionCube. Mas, se você considerar que uma verificação adicional é necessária, siga as instruções abaixo.

1 – Carregue este arquivo através do Gerenciador de Aplicação – Deply Manager e inicie a aplicação selecionando o ambiente de destino (ex.: encoded-app).

2 – Na caixa de diálogo aberta, digite algum contexto personalizado para a execução do assistente (para que ele não cruze com o local da sua aplicação principal – ex.: ioncube) e clique em Deploy.

Nota: considere habilitar a funcionalidade Zero Downtime (ZDT) para garantir a disponibilidade do seu projeto durante as aplicações subsequentes.

3 – Quando o projeto for implementado, clique em Abrir no Navegador – Open in Browser próximo a ele.

4 – Para acessar o assistente, adicione loader-wizard.php ao fim da URL aberta.

Ele vai analisar e retornar o estado atual do add-on ionCube, incluindo a versão do Loader e do motor PHP que estão sendo executados.

5 – Por razões de segurança, é altamente recomendado que o assistente seja deletado quando não for mais necessário – simplesmente remova o contexto de servidor que foi criado.

É isso. Finalmente, vamos considerar como colocar o add-on Loader em ação com os arquivos que exigem decodificação.

Executando uma aplicação codificada com o ionCube

Como base para nosso aplicativo codificado de exemplo, vamos utilizar o projeto padrão Hello World da Jelastic – dê uma olhada rápida no fragmento do index.php durante a conversão.

  • Antes da codificação
<?php echo date(“Y”) ?>
  • Depois da codificação
HR+cPzETxKVkUDPezoPuP9U3Q/AbpvijoNvPblnq/z4n22/wdzHK5YALipdjelyb3PzXDgW7R23a
sV4ho1xgjKfOhcILhKjjQzddzHCP4LgY6AVRniFjtYoeEVQG2us1pRfGtlLstVaL6mWkQBjh8xAo
KsSEOfF+M9IaQTh8/Slt5futFfMu7gy+KfX/AzDHP3YLGzXZJWrxI0MioqVEyqU+bMQ58ywvtRtT
U9tEkOE9ykLIcqk2hej71lJBS+JPbPJ/JyrJ7jyKaM0BD4k1PQ6BQP4rvlOnSFlSplNe82H4XB+e
u4uXE/zsICn8z3SzbFSIuy99rgbo0KozlbsrWlXNzCoeI7LIH7dvgdvQQJKIlfMUeh6K++qm7LYI
s6jhLiBDCH0+wQHk7TMf9onrc4lwFQdesycz3O4cdp3gALFMSSR304Yr5LUmnTyTyN2CW6dgVs9L
d6bbk7YnEUjQfc4BYBYHZH4E+FwWFqB5FI4+oyIb/aHl79iFyH37c3yH7HRdT6NCIqxttaQpRLXm
4AKttNrXZ7c3Gbk4f9onnyNVw/IO66+NQnNiwnrkTbZhUNPuvrmFKctqYsWjL0t707IiI17jJdpq
HjUTux5o3Gm/HIl+QbMJsvoaKbjXVmrF41bFePRxUwXRLjC3jTtrHcbXuFnQCvih36nAy+Zgj1aR
Ft/JBrVZcxOZHcQTTD3L5Y1rEcXPMj9bH6b6eu2UPwXfuadwtOVvbz0Xfd5ur69Z/CM4AqdRxkaQ
helGAdG5iYkkPeq=

O código compilado contém várias camadas de codificação que podem ser interpretadas e processadas somente pelo ionCube Loader. Isso será feito automaticamente pela extensão que instalamos – basta implementar seu projeto PHP no ambiente de destino normalmente e abrir no navegador.

A aplicação está instalada e funcionando, isso significa que o Loader processou com sucesso todos os arquivos protegidos.

Nesse ponto, com a estrutura requerida pela aplicação já sendo aplicada em um container, a performance do seu ionCube Loader pode ser aumentada eliminando o processamento de arquivos desnecessários.

Restringindo a área de trabalho do inoCube

Com as configurações padrão, o Loader vai examinar todos os arquivos de um servidor web para saber se estão codificados e processar os necessários quando a aplicação for acessada. Para acelerar esse processo e melhorar a performance da decodificação, é uma boa prática apontar o Loader para o local no servidor com seus arquivos codificados (ou diretamente para os necessários).

Como o ionCube representa uma extensão PHP, suas configurações podem ser ajustadas dentro do arquivo de configuração php.ini no seu servidor de aplicação. Para acessá-lo, clique em Configurações, próximo ao nó apropriado e selecione esse arquivo no painel do gerenciador de arquivos (File Manager).

No fim do arquivo aberto, especifique a diretiva ioncube.loader.encoded_paths  com o caminho de destino do diretório ou arquivos necessários, como seu valor. Exemplo:

ioncube.loader.encoded_paths = “/var/www/webroot/ROOT/index.php“

Dicas: Para mais personalizações complexas da lista de locais processados, utilize as seguintes opções de formatação:

  • Para especificar múltiplas entradas, separe-as com dois pontos “:”, colocando mais “+” ou menos “-“ como prefixo antes de cada caminho para adicionar/excluir o local especificado.
  • Se nenhum prefixo for dado, o sinal de mais “+” será assumido.
  • Para o PHP 5.1 e superior, múltiplos locais podem ser adicionados em várias linhas, de acordo com a seguinte sintaxe:

ioncube.loader.encoded_paths = “/path1″
ioncube.loader.encoded_paths = ${ioncube.loader.encoded_paths}”:/path2″ e assim vai

Para mais informações sobre como definir a área de trabalho necessária para o Loader, acesse o Manual do Usuário do Loader.

Não se esqueça de salvar suas alterações para ter certeza de que seus dados estão seguros.

Hospede suas aplicações sem comprometer a segurança. Teste o ionCube Loader para executar arquivos codificados PHP no Jelastic Cloud em um dos provedores de hospedagem.