Tenho um site que usa um script python para obter informações de uma entidade separada. O script python é necessário devido às bibliotecas em uso e à estrutura da outra entidade. As informações recuperadas serão utilizadas de diversas maneiras no site.
O site em si é PHP rodando no Apache e há uma seção que inicia o script python. Obviamente, sendo um servidor Apache, o script python é iniciado pelo Apache, portanto o script deve ser utilizável/legível pelo Apache.
O problema é que se um usuário for até o local do script (ou seja, www.mysite.com/scripts/myscript.py
), o código poderá ser visualizado através do navegador.
É possível configurar as permissões de forma que o Apache possa continuar usando o script, mas ao acessar o script diretamente em um navegador, o código não possa ser visualizado? Também concordo em alterar o script para que não seja facilmente lido (talvez ofuscá-lo?).
Tentei alterar o .htaccess
arquivo para não permitir a leitura de arquivos nesse diretório, mas embora ele direcione para uma página 403 ao tentar visualizar, evita que o script seja usado pelo Apache. Também alterei as permissões do arquivo para permitir que o Apache execute o arquivo, mas não o leia... isso parece impedir o Apache de ler os resultados do script.
Alguma ideia?
Edição 1: Acho que deve ser observado que o script python está sendo iniciado pelo PHP através do comando exec: exec("$cmd > /dev/null 2>&1 & echo $!;")
, onde $cmd
está o comando a ser executado. Este pode ou não ser o melhor caso de uso aqui. Se houver outra maneira de fazer o PHP iniciar um script python e obter os resultados do script, estou aberto a essa alternativa.