Existe uma maneira (relativamente) segura de executar comandos da CLI a partir da Web?

4

Desde que comecei a programar aplicativos LAMP, eu queria desenvolver um painel de controle administrativo para as minhas caixas. (Para fins divertidos e educativos, caso contrário eu usaria algo já existente no mercado)

Mas o que sempre me impediu é que eu sempre ouvi funções exec () (a única maneira que eu sei de conseguir isso) é o mal .... você sabe: "não use elas", "é uma má codificação", etc.

O que eu nunca ouço é uma alternativa mais segura para esse propósito, então minha pergunta é:

Existe algum?

Não é suficiente executar esse aplicativo em um servidor da Web dedicado, com uma raiz de documento protegida por senha?

Bem, essa é minha dúvida.

    
por Kev 12.10.2013 / 19:17

2 respostas

2

Eu acho que o risco real é quando você mistura a entrada do usuário em um desses exec() . É aí que entra a maior parte do risco, já que você está permitindo que os usuários forneçam dados que, quando misturados à CLI, podem fazer coisas perigosas, como inserir ponto e vírgula ( ; ) em uma caixa de texto e executar comandos depois de terem fornecido argumentos.

Portanto, em geral, executar comandos de maneira não somente leitura não deve mais ser perigoso do que fazer outra coisa.

É basicamente o mesmo problema que com um ataque de injeção de SQL, com o qual você pode estar mais familiarizado.

    
por 12.10.2013 / 20:26
1

Tanto quanto eu sei (e eu não sou um programador realmente, então pegue isso com uma pitada de sal), exec() chamadas não são nada mal. É justo que eles criam um novo processo e têm uma alta sobrecarga desde que você está chamando uma função do sistema. Geralmente, as pessoas sugerem que você faça coisas internamente em qualquer programa / script que esteja escrevendo e evite chamadas externas como exec() .

No entanto, se seu objetivo é executar comandos no sistema, não há como fazê-lo sem essa chamada. Claro, existem riscos de segurança, permitindo que usuários aleatórios executem comandos arbitrários em seu servidor, o que está convidando problemas. No entanto, se o acesso a esse servidor for severamente restrito, você poderá fazê-lo com segurança.

De qualquer forma, conclusão principal, exec() funções não são inerentemente ruins, elas simplesmente tendem a ser menos eficientes do que fazer algo internamente.

    
por 12.10.2013 / 19:38