Mi sembra che l'iniezione SQL possa essere evitata semplicemente convertendo tutto in una semplice codifica come base64 che non ha simboli dannosi.
Nella query classica "SELECT * FROM users WHERE username = '${username}'"
, se l'utente immette, ad esempio, ' OR 1=1;--
, questo si trasformerebbe in "SELECT * FROM users WHERE username = '' OR 1=1"
, e sono abbastanza sicuro che molti di voi vedranno il problema con questo.
Tuttavia, se è stata utilizzata una codifica base64 semplice, questa dovrebbe invece trasformarsi in "SELECT * FROM users WHERE username = 'JyBPUiAxPTE7LS0='"
e quindi essere decodificata quando recuperata. Ciò consentirebbe anche simboli e spazi in nomi utente / password.
A meno che non stia valutando severamente qualcosa, questo sembra molto più semplice della semplice lista nera di determinate parole e simboli.