n1kkeMedlem sedan aug. 200634 inlägg 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 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
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")))