La cosa migliore spesso è validare l'input inserito dall'utente tramite espressione regolare prima di effettuare i query
Se ad esempio hai un campo nick che viene da un form e pretendi che un nick sia composto solo da lettere, numeri e il carattere "_" e che il primo carattere sia una lettera e in tutto siano da 4 a 20 caratteri puoi fare una cosa del genere
Codice PHP:
if(isset($_POST["nick"]))
{
if(!preg_match("/^[a-zA-Z][a-zA-Z0-9_]{3,19}$/",$_POST["nick"]))
echo "Nick non valido";
else {
// Elaborazione
}
}
In questo modo hai la garanzia che l'input dell'utente non possa essere dannoso, ma che segua delle regole precise
Se ad esempio metto nel tuo forum questo messaggio
Codice PHP:
<script language="javascript">while(true) alert("Adessso sei fregato");</script>
Ogni volta che un utente cercherà di accedere alla pagina con il messaggio si troverà ad avere eternamente un alert che riappare ogni volta che clicca ok. Chiuderà il browser con ctrl+alt+canc e non lo vedrai più.
Tutti gli input degli utenti devono quindi essere controllati in qualche modo e resi "innocui". Le funzioni di solito utili sono
preg_match
strip_tags
htmlentities
addslashes
Il link che ti ho dato prima ha molti suggerimenti in tal senso