webForumDet fria alternativet

SQL Injection Skydd

2 svar · 495 visningar · startad av n1kke

n1kkeMedlem sedan aug. 200634 inlägg
#1

Hej jag har försökt få svar på hur man hindrar en SQL-Injection. Men jag kan inte få rätt på det

Hittade dock denna kod när jag sökte

Function SafeSQL(gbMess)
SafeSQL = Replace(gbMess, "'", "''")
End Function

gbmess är formuläret

men vad ska jag göra mer? Eller det räcker så

JosefMedlem sedan mars 20023 561 inlägg
#2

Menar du att gbMess är formuläret i form av <form bla bla> så kommer det inte att fungera.

Du får skicka in varje formulärfält för sig själv. Eller rättare sagt, värdet i varje formulärfält.

emissionMedlem sedan dec. 19996 721 inlägg
#3

n1kke skrev:

gbmess är formuläret

Nja, om det verkligen är formuläret, så är det fel. Funktionen SafeSql ska du använda på alla värden som du stoppar in i SQL-frågan. Numeriska värden konverterar du med fördel till rätt subtyp, så blir man relativt säker.

SQL="UPDATE tabellen SET namnet='" & SafeSQL(request("namnet")) & "'" WHERE id=" & cInt(request("id"))

conn.Execute SQL

n1kke skrev:

men vad ska jag göra mer? Eller det räcker så

Det räcker väldigt långt, men om du vill vara helt säker så ska du använda parametriserade frågor.

SQL="UPDATE tabellen SET namnet=? WHERE id=?"
Set cmd=Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection=connObj
cmd.CommandText = SQL
cmd.CommandType = 1
cmd.Execute ,Array(cstr(request("namnet")),cint(request("id")))
258 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
134 ms — hämta forumlista (db)
122 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)