le cause principali, di solito, sono bugs di qualche script che permette l'inserimento di codice malevolo, oppure server vulnerabili.
Solitamente questi codici malevoli vengono scritti su file html e cmq su tutti quei files e cartelle che hanno i permessi di scrittura....quindi se non sono necessari al funzionamento del sito sempre meglio disabilitare i permessi. Poi tenere aggiornati gli eventuali "script di terzi"