Hvordan blokkere SQL-injeksjon

SQL-injeksjon er en form for nettverksangrep som involverer "sprøyterom" kode i en database i et forsøk på å tvinge førespurnaden programmet til å returnere en feil og gi injektoren litt informasjon om både databasen og informasjonen i den. Det kan utføres fra en hvilken som helst webside som fungerer som en portal til en usikker database og ikke rense sine spørringer.

Bruksanvisning

1 Pass på at du angir hvilken type innspill som kreves når du skriver din SQL-spørring kode. De fleste utviklingsmiljøer lar deg spesifisere "streng", "heltall" eller "date". For eksempel URL

http://mysite.com/listauthordetails.aspx?user_id=1234

blir tolket av den database som

SELECT first_name, last_name FROM brukere WHERE user_id = '1234'

Denne spørringen kan omskrives til

Dim ID som String = Request.QueryString ( "ID")

Dim cmd Som ny SqlCommand ( "SELECT user_id FROM brukere WHERE user_id = @user_id")

Dim param = ny SqlParameter ( "user_id", SqlDbType.VarChar)

param.Value = ID

cmd.Parameters.Add (param)

Denne koden hindrer ytterligere informasjon blir lagt til på slutten av SQL-spørringen, og bare passerer resultatet av USER_ID forespørsel.

2 Bruk denne filen til å blokkere ulovlige forespørsler før de sendes til databasen, ved hjelp av RewriteCond () kommandoen. For eksempel, for å blokkere et skript forsøker å endre en forespørsel variabel, bruker linjen "RewriteCond% {QUERY_STRING} _REQUEST (= | [| \% [0-9A-Z] {0,2})" i .htaccess fil .

3 Test din SQL-spørring kode før du setter det inn i direktesendingen på nettet. Dette er sannsynligvis det viktigste du kan gjøre, og bør gjøres hver gang du oppdaterer ditt nettsted.