Questa domanda non riguarda la protezione dagli attacchi SQL injection. Quella domanda ha ricevuto risposta molte volte su StackOverflow e ho implementato le tecniche. Si tratta di interrompere i tentativi .18.000 tentativi di iniezione MySQL al giorno: interruzione dei tentativi
Recentemente il mio sito è stato colpito da un numero enorme di attacchi di iniezione. In questo momento, li intrappolano e restituisco una pagina statica.
Ecco ciò che il mio URL appare come:
/products/product.php?id=1
Questo è ciò che un attacco assomiglia:
/products/product.php?id=-3000%27%20IN%20BOOLEAN%20MODE%29%20UNION%20ALL%20SELECT%2035%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C%27qopjq%27%7C%7C%27ijiJvkyBhO%27%7C%7C%27qhwnq%27%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35--%20
so per certo che questo non è solo un cattivo collegamento o il grasso dalle dita digitando quindi non voglio inviarli a una pagina panoramica. Inoltre, non voglio utilizzare alcuna risorsa sul mio sito che fornisce pagine statiche.
Sto considerando di lasciare che la pagina muoia con die()
. C'è qualcosa di sbagliato in questo approccio? O c'è un codice di ritorno HTML che posso impostare con PHP che sarebbe più appropriato?
Edit:
Sulla base di un paio di commenti qui sotto, ho guardato come restituire 'pagina non trovata'. Questo Stack Overflow answer di icktoofay suggerisce di usare un 404 e quindi il dado(); - il bot pensa che non ci sia una pagina e potrebbe anche sparire, e non vengono più utilizzate risorse per visualizzare un messaggio non trovato nella pagina.
header("HTTP/1.0 404 Not Found");
die();
è sufficiente utilizzare le istruzioni preparate – bksi
Il ripristino di un errore 403 potrebbe essere un po 'appropriato. – zebediah49
Avete un sistema di bilanciamento del carico F5 prima del server? – Colyn1337