Quando si parla di sicurezza delle applicazioni Web, e con esse i CMS, viene spesso nominata l'SQL injection. Essa è una pratica che consiste nell'inviare all'applicazione un parametro che permette di rivelare all'attaccante informazioni.
L'SQL Injection è uno dei metodi più sfruttati dai cracker per poter accedere ad un sito Web, soprattutto quando si parla di CMS Open Source che utilizzano estensioni di terze parti mal progettate. Ad esempio un componente Joomla che esegue una query
$query_sql = "select * from jos_users where name='".$nome."';";
dove $nome è un parametro inviato tramite metodo post o metodo get.
Se il componente non prevede alcuna protezione, l'hacker può inserire nella form in cui viene digitato il nome la stringa
'nomequalsiasi' or 'a'? = 'a'
La query SQL generata sarà quindi
$query_sql = "select * from jos_users where name='nomequalsiasì or 'a' = 'a';";
La seconda parte di questo "or" è una condizione sempre verificata, quindi nella pagina ci sarà l'elenco dei parametri di tutti gli utenti presenti nella tabella.
Attraverso la SQL injection è possibile anche iniettare comandi SQL che possono danneggiare l'intero database, per cui è necessario prestare molta attenzione quando vengono realizzate estensioni e (perché no) quando si installano estensioni di terze parti.