- Learn
- Guida sicurezza di PHP
- Command Injection Flaws
Command Injection Flaws
Come le SQL injection modificano l’interazione dell’applicazione Web con il database e gli XSS iniettano codice “eseguibile” nelle pagine HTML, sempre e comunque causa l’imperizia (o la mancanza di tempo) del programmatore che non forzi l’applicazione a validare l’input dell’utente, così i Command Injection Flaws sono vulnerabilità causate dal passaggio di dati non validati a comandi ed eseguibili esterni via exec(), shell_exec(), system(), eccetera.
Con ciò intendo che l’utente sia abilitato ad aggiungere alcuni dati a stringhe di comandi dal programmatore comunque abbozzate e “cablate” nel codice, al fine di completarle:
echo shell_exec(“dir “.$_POST[‘parametri_dir’]);
ed escludo che l’utente possa passare intere stringhe di comandi in tal modo:
shell_exec($_POST[‘exec_cmd’]);
Anche il mio gatto – che è una persona seria – perderebbe ogni stima nel programmatore che agisse in questo modo.
In ogni modo, nel caso si debba passare ad un eseguibile comandato dal PHP dati inseriti dall’utente, è assolutamente necessario controllare quanto in input. A tal proposito PHP mette a disposizione due comandi per la validazione degli ingressi, da eseguire su essi prima di passarli alle funzioni dette.
escapeshellcmd
Citando il manuale reperibile su php.net:
Elude ogni carattere di una stringa che potrebbe essere usato per indurre un comando shell ad eseguire codice arbitrario. Questa funzione dovrebbe essere usata per assicurarsi che ogni dato che giunga dall’input dell’utente venga neutralizzato prima di essere passato a funzioni come exec() o system() o all’operatore backtick.
Traducendo: esegue l’escaping dei caratteri che verrebbero interpretati dalla shell: # & ; ` ‘ ” | * ? ~ < > ^ ( ) [ ] { } $ 0x0A 0xFF, ma non esegue il quoting degli argomenti.
escapeshellarg
Citando il manuale reperibile su php.net:
Aggiunge le virgolette attorno ad una stringa ed elude ogni virgoletta semplice per permettere di passare una stringa direttamente ad una funzione shell e che questa venga trattata come un singolo argomento.
Se vuoi aggiornamenti su Command Injection Flaws inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Francesco Baldassarri, inizare con Galileo
Parliamo di Arduino/Galileo come board completa per realizzare progetti completamente compatibili con le board più comuni, con la marcia in […]