La soluzione migliore sarebbe negare implicitamente, cioè consentire esattamente i dati che vuoi, ma nessun altro.
Potresti scrivere espressioni regolari che corrispondono a tutti gli input che non sono in accordo con il tuo filtro per trovare qualche input dispari, che potrebbe essere un exploit. È anche un buon modo per trovare input validi che hai omesso nella tua espressione regolare.
Un nome utente può andare bene con [a-zA-Z0-9]+
, piuttosto che rimuovere virgolette singole o simili per disinfettare l'input.
EDIT:
Questo è l'approccio che prenderei:
- Aggiungi espressioni regolari per negare implicitamente tutti gli input, per risolvere questo problema in futuro.
- Controlla i dati nei file di registro rispetto alle espressioni regolari che sono state scritte nel passaggio 1
- Rimuovi tutti i dati di input nei file di registro che corrispondono alle espressioni regolari.
- Riduci i log contando le file identiche e deduplicandole, quindi non dobbiamo guardare 1000 righe identiche, ma sappiamo comunque che abbiamo avuto 1000 righe del genere nei file di registro.
- Controllare se uno degli input registrati deve essere valido. In tal caso, aggiorna la regex pertinente e vai al passaggio 2.
- Controllare se uno qualsiasi degli altri dati del log appare sospetto.