Ci sono dei rischi nell'abbinare la regex fornita dagli utenti con gli input forniti dall'utente?

3

Ho un bot IRC scritto in python3 che analizza le richieste degli utenti per la ricerca e la sostituzione. C'è qualche rischio di DoS o altri attacchi facendo questo?

    
posta Shelvacu 29.01.2016 - 03:29
fonte

1 risposta

8

Regex può diventare una operazione incredibilmente lenta in Python 3 perché python è il modulo non crea un DFA in background e utilizza invece il backtracking ricorsivo. Ciò significa che l'espressione regolare impiegherà tempo esponenziale piuttosto che tempo lineare quando applicato a una stringa. Un utente malintenzionato può creare un'espressione regolare che impiega il tempo massimo necessario per completare il backtracking ricorsivo che può provocare un attacco DoS se il tempo di elaborare queste regex è molto più lento della possibile frequenza di richieste.

Per mitigare questo problema ti suggerisco di utilizzare NFA compiling to DFA l'implementazione delle espressioni regolari che potresti dover creare da solo o trova come modulo da qualche parte. Ha fatto alcune ricerche preliminari e non ha trovato molto da segnalare.

    
risposta data 29.01.2016 - 03:54
fonte

Leggi altre domande sui tag