Nota: mi occupo dell'iniezione SQL e dell'output di output altrove. Questa domanda riguarda solo il filtraggio degli input, grazie.Filtraggio input utente: devo filtrare l'HTML?
Sono nel mezzo del refactoring delle mie funzioni di filtraggio dell'input dell'utente. Prima di passare il parametro GET/POST ad un filtro specifico tipo con filter_var() faccio la seguente:
- controllo il parametro di codifica con mb_detect_encoding()
- convertire in UTF-8 con iconv() (con // IGNORE) se si tratta di non ASCII o
- pulite white-spazi con a function found on GnuCitizen.org
- passare il risultato attraverso strip_tags() 8 UTF-- Tag non consentite a tutti, Markdown solo
Ora la domanda: ha ancora senso passare il parametro a un filtro come htmLawed o HTML Purifier oppure posso pensare all'input come sicuro? Mi sembra che questi due differiscano principalmente sulla granularità degli elementi e degli attributi HTML consentiti (a cui non sono interessato, poiché rimuovo tutto), ma i documenti htmLawed hanno una sezione su "dangerous characters" che suggerisce che potrebbe esserci un motivo per usarlo. In questo caso, quale sarebbe una sana configurazione per questo?
Il carattere pericoloso potrebbe essere un carattere di controllo UTF-8. – Jacco
Qualche suggerimento su come sbarazzarsi di loro? – djn
In realtà non ho capito, SQL Injection si occupa di impedire l'inserimento di brutti utenti in una query sql. In effetti, la maggior parte delle vulnerabilità è dovuta a INGRESSO spiacevole, non all'output. Queste sono chiamate vulnerabilità "Taint and Sink". – rook