tipo - Cattura di SQL Injection e altre richieste Web dannose




sqlmap (6)

Ora che ci penso, un filtro bayesiano simile a quelli usati per bloccare lo spam potrebbe funzionare anche in modo decente. Se hai riunito un set di testo normale per ogni campo e un insieme di iniezioni SQL, potresti essere in grado di addestrarlo a segnalare attacchi di iniezione.

Sto cercando uno strumento in grado di rilevare richieste maligne (come l'ovvio rilascio di SQL o post) e metterà immediatamente a bando l'indirizzo IP del richiedente / aggiungere a una lista nera. Sono consapevole che in un mondo ideale il nostro codice dovrebbe essere in grado di gestire tali richieste e trattarle di conseguenza, ma c'è molto valore in tale strumento anche quando il sito è al riparo da questo tipo di attacchi, in quanto può portare a Risparmio di larghezza di banda, prevenzione dell'abbondanza dell'analisi, ecc.

Idealmente, sto cercando una soluzione multipiattaforma ( LAMP/.NET ) che si trovi ad un livello superiore rispetto allo stack tecnologico; forse a livello di web server o hardware. Non sono sicuro che esista, comunque.

Ad ogni modo, mi piacerebbe sentire i feedback della comunità in modo che possa vedere quali potrebbero essere le mie opzioni in merito all'implementazione e all'approccio.


Un metodo che potrebbe funzionare in alcuni casi sarebbe quello di prendere la stringa SQL che verrebbe eseguita se si utilizzava in modo ingenuo i dati del modulo e lo si passava a un codice che conta il numero di istruzioni che verrebbero effettivamente eseguite. Se è maggiore del numero previsto, allora c'è una buona possibilità che sia stata tentata un'iniezione, specialmente per i campi che probabilmente non includeranno caratteri di controllo come il nome utente.

Qualcosa come una normale casella di testo sarebbe un po 'più difficile dal momento che questo metodo avrebbe molte più probabilità di restituire i falsi positivi, ma questo sarebbe un inizio, almeno.


Oracle ha un tutorial online su SQL Injection . Anche se vuoi una soluzione già pronta, questo potrebbe darti qualche suggerimento su come usarlo meglio per difenderti.


Uno dei miei siti è stato recentemente hackerato tramite SQL Injection. Ha aggiunto un collegamento a un virus per ogni campo di testo nel db! La soluzione era aggiungere del codice alla ricerca di parole chiave SQL. Fortunatamente, ho sviluppato in ColdFiusion, quindi il codice si trova nel mio file Application.cfm che viene eseguito all'inizio di ogni pagina web e guarda a tutte le variabili URL. Wikipedia ha anche dei buoni link per aiutare.


Il problema con uno strumento generico è che è molto difficile elaborare una serie di regole che combaciano solo con un attacco vero e proprio.

Le parole chiave SQL sono tutte parole inglesi e non dimenticare che la stringa

 DROP TABLE users;

è perfettamente valido in un campo modulo che, ad esempio, contiene una risposta a una domanda di programmazione.

L'unica opzione sensata è quella di disinfettare l'input prima di passarlo al tuo database, ma passarlo comunque. In caso contrario, molti utenti perfettamente normali e non malintenzionati verranno bannati dal tuo sito.


Interessante come questo venga implementato anni dopo da Google e che rimuovono l'URL tutti insieme per prevenire attacchi XSS e altre attività dannose







sql-injection