Sanificazione non sicura? Questo codice SQLi è vulnerabile?

2
Function RemoveSuspeitos(ByVal strTXT)
               Dim txtAux As String
               txtAux = strTXT
               txtAux = Replace(txtAux, chr(34), "")
               txtAux = Replace(txtAux, "'", "")
               RemoveSuspeitos = txtAux
End Function

DB: MSSQL

1) Dimentica gli errori di sintassi nel codice precedente, non sono esperto in VB.

2) Diciamo che uso sempre virgolette singole o doppie, anche per i valori int (ad es. '"+ $ int_id +"').

Questa sanitizzazione è pericolosa? Se sì, perché? Per favore mostrami uno scenario di exploit reale.

    
posta Lucas NN 17.04.2014 - 07:13
fonte

1 risposta

3

Sì, è vulnerabile. A seconda del meccanismo di input e dell'implementazione, posso semplicemente aggiungere un UNION e continuare la query per selezionare ulteriori dati. Non posso darti uno scenario esatto senza vedere l'implementazione e la query con cui questa stringa è concatenata. Il fatto è che autorizzi l'input oltre l'ambito di cui hai bisogno o desideri.

Usa solo SQL parametrizzato, sono sicuro che VB supporta l'aggiunta di parametri alle tue query.

Vedi questo

    
risposta data 17.04.2014 - 08:01
fonte

Leggi altre domande sui tag