Hej jag har ingen koll alls på det här med SQL injections. Hur förhindrar man sådana? Parametrar, eller ex. "Username.Replace("'","''"), fast parametrar är att rekommendera... För Access och MSSQL får du dubblera apostroferna. För MySQL får du ersätta \ mot \\ och ' mot \'. I Access och MSSQL använder du parametrar såhär: Tack! Viste inte att parametrar skyddade mot SQL injections. Parametrar har jag använt tidigare så jag vet hur man använder dem. Skall från och med nu alltid använda dem. OBS! > update .... where name=''Nisse'' and id=1 "Hm... Det är inte apostroferna runt strängarna man dubblerar, utan apostroferna i strängarna..."Hur förhindrar man SQL injection attacker i ASP.NET?
Hur får man koden nedan säker?
<code>
Dim Username = Request.QueryString("Username")
Dim ID = Request.Form("ID")
objCmd = New OleDbCommand("UPDATE User SET AdsDisplayed = " & Username & " WHERE Type=2 AND ID=" & Username & "", objConn)
objCmd.ExecuteNonQuery()
</code>Sv: Hur förhindrar man SQL injection attacker i ASP.NET?
Sv: Hur förhindrar man SQL injection attacker i ASP.NET?
Som redan sagts så är dock parametrar att föredra om möjligt.Sv:Hur förhindrar man SQL injection attacker i ASP.NET?
'Använd en av nedanstående anslutningstyper
Dim dbC As New SqlCommand 'För MSSQL
Dim dbC As New OleDbCommand 'För Access
dbC.CommandText = "UPDATE Table SET Field = @Value WHERE ID = @ID"
dbC.Parameters.Add("@Value", strValue)
dbC.Parameters.Add("@ID", intID)
I MySQL gör du såhär:
Dim dbC As New OdbcCommand
dbC.CommandText = "UPDATE Table SET Field = ? WHERE ID = ?"
dbC.Parameters.Add("", strValue)
dbC.Parameters.Add("", intID)
Kom ihåg att du måste lägga till parametrar i samma ordning som de står i SQL-strängen.
Sv: Hur förhindrar man SQL injection attacker i ASP.NET?
Sv:Hur förhindrar man SQL injection attacker i ASP.NET?
Att ersätta ' med '' innebär bara minimerad risk, ingen lösning alls. Det ger inge bra skydd.
Ex
update .... where name=''Nisse'' and id=1
Vad händer här om 1 finns i en textbox, i query eller cookie? Där kan du inte skydda dig med att ersätta ' med '' då det inte finns.
ex:
update ... where name=''Nisse'' and=1 or 1=1 etc.
Så man bör köra med parametrar, men även dessa går att hacka så det finns en hel del man måste tänka på för att skydda sig helt. Bra tips finns på nätet, men du kan även löpa write secure code second edition för att få en rad tips på just detta men även en hel del annat som kan vara bra att tänka på.
Mvh JohanSv: Hur förhindrar man SQL injection attacker i ASP.NET?
Hm... Det är inte apostroferna runt strängarna man dubblerar, utan apostroferna i strängarna...
Numeriska värden skyddar man genom att se till att de är tal:
www.aspsidan.se/default.asp?page=readArticle&menu=2&aId=334Sv:Hur förhindrar man SQL injection attacker i ASP.NET?
Sant, missade att ta med " och " sorry :-/
Bra länk, dock finns det andra saker man oxå bör tänka på här, skall man verkligen skicka id via query? man behöver även här kolla så det id som står där då är kopplat till en viss person och om denna verkligen får utgöra nått med detta id. Annars kan man lätt byta ut id och ev göra saker med någons identitet. Så det är mkt mer att tänka på. Så jag rekomenderar fortfarande "Write secure code second edition" för fler fällor.
Mvh Johan