L'iniezione SQL è possibile tramite numero intero?

3

Di seguito è riportato il seguente pseudo-codice:

public  updated(int id) {

  // Note that variable **id** is not surrounded by single/double quotes. 

  sql = "Update table user set status=2 where user_id=**id** ";  

  // execute command
}

È vulnerabile all'iniezione SQL (forse l'iniezione SQL aritmetica)?

    
posta GearLab 11.11.2016 - 13:33
fonte

2 risposte

6

No, la tua query si aspetta un intero ed è garantito per ottenerne uno. Una vulnerabilità di SQL injection emerge solo quando un utente malintenzionato può fornire dati imprevisti che potrebbero alterare la query. Diversi numeri interi non influenzano la sintassi. Ma non appena smetti di imporre il tipo diventa pericoloso.

Come sottolineato da @CodesInChaos, se sei l'autore di questo snippet dovresti prendere in considerazione l'utilizzo di query parametrizzate . In questo modo il tipo fornito diventa irrilevante, più facile da controllare e più difficile da interrompere per sbaglio.

    
risposta data 11.11.2016 - 14:03
fonte
0

Non esistono tecniche note per l'esecuzione di iniezioni SQL tramite numeri interi. Tuttavia, notare che i numeri non interi sono vulnerabili all'iniezione SQL in alcuni casi tramite Iniezione SQL laterale . Non è chiaro se gli interi rimarranno al sicuro per sempre.

Come hanno già detto altre risposte - usa query parametrizzate anche per numeri e date.

    
risposta data 12.11.2016 - 03:09
fonte

Leggi altre domande sui tag