Innanzitutto occorre scoprire il numero di colonne che la query inviata andrà a selezionare. Faccio degli esempi: "SELECT id, title, message FROM news WHERE id = 1" andrà a selezionare 3 colonne ovvero id, title e message; "SELECT * FROM news WHERE id = 1", invece, selezionerà tutte le colonne. Ovviamente non sappiamo a priori il numero di colonne da selezionare quindi utilizzeremo il comando SQL "ORDER BY" che ordina i risultati della query in base all'elenco di colonne specificate.
Prendiamo in considerazione il caso in cui la query è "SELECT * FROM tb_news WHERE id = 1" e il numero di colonne di tb_news è 6. In pratica se ordiniamo per 10 i risultati ottenuti ci sarà un errore poiché questi ultimi composti da sole 6 colonne. Se iniettiamo la seguente stringa "1 ORDER BY 10--" come conseguenza la news non verrà visualizzata o apparirà un messaggio d'errore. Proviamo a diminuire il numero di ordinamento a 7 iniettando "1 ORDER BY 7--". La news non appare ancora, quindi diminuiamo ancora a 6 attribuendo all'id del GET la stringa "1 ORDER BY 6--". La news appare, di conseguenza sappiamo che il numero di colonne che verranno selezionate sono 6.
Attenzione! Se iniettiamo la stringa "1 ORDER BY 2--" e non ci sarà nessun messaggio d'errore e la news verrà visualizzata correttamente non è detto che le colonne della tabella delle news siano 2 quindi conviene aumentare di 1 il numero di ordinamento fin quando apparirà un messaggio d'errore o non verrà visualizzata la news. Allora le colonne selezionate saranno pari al numero di ordinamento (con il quale non appare la news) meno uno.
con order by la pagina una volta ricaricata mi da risultato positivo con qualsiasi valore io metta come è possibile ?
RispondiElimina