Hvordan bruke Sp_Executesql å bekjempe SQL-injeksjon

SQL Server sp_executesql lagret prosedyre utfører dynamiske SQL-setninger du oppretter i et program. SQL-injeksjon er en hack som lar brukerne få tilgang til SQL database. Bruk sp_executesql lagrede prosedyrer sammen med "Erstatt" -funksjonen for å erstatte enkeltanførselstegn, som brukes til å kjøre ondsinnet kode på serveren.

Bruksanvisning

1 Klikk på Windows "Start" -knappen og velg "Alle programmer". Klikk på "SQL Server", deretter "SQL Server Management Studio" for å åpne programmet.

2 Skriv inn brukernavn og passord i innloggingsskjermen SQL-server for å få tilgang til server databaser. Klikk på en database som du ønsker å spørre og velg "New Query" for å åpne redigereren.

3 Lag en dynamisk SQL-spørring. Følgende kode oppretter en dynamisk spørring som inneholder sitater i uttalelsen:

erklære @query som nvarchar (500)
satt @query = 'velger navn fra kunder hvor signupdate =' '1/1/2011' ''

I dette eksempelet kan en hacker sette inn sitater i "hvor" klausul, noe som fører til feil i SQL-spørring.

4 Bruk sp_executesql lagret prosedyre med Skift-funksjonen for å unngå SQL-injeksjon. Skriv inn følgende kode inn i editoren:

sp_executesql Erstatt (@query, '\' ',' '' ')

Koden erstatter hvert enkelt sitat med en dobbel sitat, som eliminerer muligheten for SQL-injeksjon.

5 Trykk F5 for å utføre setningen. SQL utfører og resultatene av spørringen vises i resultatene panel.