Permitir que o seu script execute ferramentas de linha de comando pode ou não ser seguro. Depende muito do que você está fazendo.
Considere os dois cenários a seguir:
-
Um script que executa
ls /tmp
e exibe a saída
Isso provavelmente está bem. Você pode ter um vazamento de informações (alguém acessando a página conhece o conteúdo de/tmp
no servidor, o que pode dar a eles ideias sobre como ignorar sua segurança). -
Um script que
grep
s para uma string especificada pelo usuário em um arquivo
Isso provavelmente não é NOT : o script chamará algo comosystem("grep $user_string /some/file")
e um atacante criativo poderá descobrir o que está fazendo, inserir um;
extra no$user_string
bit e depois executá-lo código arbitrário como usuário do servidor da Web.
Existem passos de mitigação que você pode tomar para lidar com (2) acima (o PHP tem escapeshellarg () e escapeshellcmd () para ajudá-lo (a), mas o resultado final é sempre que você permitir um aplicativo da Web para executar comandos que você abre para ataques de injeção de comando e precisa planejar, auditar e proteger completamente seu código (incluindo o comando que está chamando) para garantir que você não fique aberto a ataques.
Se o que você está tentando fazer pode ser realizado com PHP nativo (gravado com segurança), que é quase sempre uma opção melhor para velocidade e segurança.