Ak vaša aplikácia volá procedúry poslaním SQL reťazca do databázy, zraniteľnosť ostáva. Napríklad, predstavte si nasledujúci VBScritp používajúci ADO recordset a objekt na pripojenie k Microsoft SQL serveru:
set rs = conn.execute("usp_my_procedure " & strInput)
Ak premenná strInput obsahuje reťazec prijatý z formulára alebo reťazca, môže kompromitovať databázu. Hackerovi stačí doplniť bodkočiarku, aby mohol pridať ďalšie príkazy.
Aby ste sa vyhli tomuto problému, môžete odstrániť všetky bodkočiarky zo vstupu. Alebo, aby to bolo bezpečnejšie, môžete parametrizovať vstup, ako je to na nasledujúcom príklade:
If strInput = "" Then
strInput = " "
End If
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = "usp_my_procedure"
cmd.Parameters.Append cmd.CreateParameter("@myinput", adVarChar, adParamInput, 50, strInput)
rs.Open cmd
Na záver si dávajte pozor na databázové príkazy, ako sú SQL server execute (alebo exec), príkaz T-SQL, ktoré môžu vytvoriť bezpečnostné diery. Okrem toho aj skryté polia alebo dáta prijaté z databázy môžu zvýšiť zraniteľnosť systému, keďže hacker môže vložiť nebezpečné hodnoty aj do skrytých polí.