C'è un modo semplice per sapere se una regex è "cattiva"

1

Stavo leggendo questo articolo (su ReDos). Gli esempi che danno sono piuttosto semplici ma sono sicuro che una regex può nascondersi ovunque. Se c'è un modo per verificare se una regex è malvagia senza spendere un sacco di tempo cercando di trovare l'NFA usata dal motore regex, sarei molto felice di saperlo.

Grazie mille.

    
posta DARK_DUCK 18.08.2015 - 09:18
fonte

1 risposta

2

La risposta è che non lo sai. Questo è il classico problema di interruzione .

Fondamentalmente non dovrebbe consentire agli utenti di impostare le proprie espressioni regex ove possibile. Se si consente loro di impostare la propria espressione regolare, è possibile attenuarla in altri modi, ad esempio consentendo loro di impostare regex quando influiscono sul proprio servizio o impostando i timeout di esecuzione. Potresti eventualmente contrassegnare le espressioni regolari di lunga durata in modo da essere a conoscenza se qualcuno dei tuoi utenti sta tentando un ReDos.

    
risposta data 19.08.2015 - 11:26
fonte

Leggi altre domande sui tag