So che filtrare una cattiva parola chiave non è un buon approccio per prevenire l'iniezione SQL. Tuttavia, quando non potevo rispondere perché questo non è un buon approccio, ecco la mia regola:
1) Quando vedo ;
, lo faccio a ''
(in modo che nessuno possa creare un'altra riga di istruzioni SQL).
2) quando vedo '
, lo faccio a ''
. (Credo che questo dovrebbe impedire la fuga di quotazioni).
3) Quando vedo *
, lo faccio a *
(in modo che l'hacker non ottenga le informazioni sulla mia tabella).
4) Quando vedo --
, lo faccio a -
(in modo che impedisca agli hacker di commentare la mia dichiarazione).
^ La ragione per cui sono venuto a conoscenza di queste 4 regole è a causa di una guida SQLi in qui
Consentitemi di fare quanto segue sul mio server durante l'analisi di un'istruzione SQL:
db.exc("INSERT INTO name VALUES ('{}', '{}');".format(firsname, lastname))
E quando guardo la regola che ho impostato, penso che sia tecnicamente sicuro prevenire l'SQL injection su questa affermazione. Ho ragione? Se no, puoi fornire un modo per romperlo? (Conosco le migliori pratiche, ma non riesco a capire perché non lo sia.) Qualcuno può aiutarmi con un esempio?