Nessuna pratica è totalmente buona o totalmente malvagia, dipende sempre dal contesto. Ma alcune pratiche sono più malvagie di altre.
Per un rapido .jsp
in cui il codice Java è incorporato direttamente nel modello HTML, i metodi Java che restituiscono bit di HTML sono OK. Ma per qualcosa di più grande di un attacco rapido è malvagio, perché è difficile da mantenere.
Il problema è che nelle applicazioni più grandi si desidera che qualcuno si concentri sul web design e che gli altri membri del team facciano il back-end. E per il progettista è facile capire un sistema di template decente, ma avranno grossi problemi nel cercare i frammenti di HTML generati nei metodi sepolti nel backend.
L'altro problema è che vuoi che il sistema dei template assicuri che un modello sano porti a un risultato corretto. Non sono sicuro di quale sarebbe l'equivalente Java, ma ad es. Genshi (python) controlla che XML valido entri e assicura XML valido si spegne automaticamente evitando tutte le stringhe interpola e accetta solo bit di HTML / XML come oggetti XML che contengono la rappresentazione ad albero e quindi sono sempre ben formati. Tale sistema di template fa molto per evitare lo scripting cross-site e opportunità di attacco simili.