Nella maggior parte dei casi, l'iniezione SQL viene facilmente evitata con l'uso di istruzioni preparate.
XSS è più difficile se prevedi di consentire agli utenti di pubblicare markup HTML. Devi rimuovere tutti i <script>
tag, tutti on*
attributi dai tag, tutti javascript:
URL, e anche in questo caso probabilmente non è completamente garantito per rendere sicuro l'HTML di input. Esistono librerie come HTMLPurifier
questo può aiutare, ma fintanto che consenti l'HTML, sei a rischio di far passare qualcosa di dannoso.
Potresti invece usare una libreria che implementa qualcosa come markdown o wikitext. Ciò limita fortemente ciò che gli utenti possono inserire, pur consentendo loro di contrassegnare il contenuto in una certa misura. Non è a prova di tutto (le persone possono ancora pubblicare collegamenti a siti dannosi e sperare che gli utenti facciano clic su di essi, cosa che alcuni saranno abbastanza ingenui da fare effettivamente) e non sarai in grado di utilizzare un editor avanzato come TinyMCE senza un qualche tipo di plug-in, ma è un lavoro molto più semplice disinfettare il markdown rispetto a disinfettare l'HTML.