JeppewebMedlem sedan sep. 2006512 inlägg
Vad är det för fel på den här kodsnutten?
<%
Set ObjRSGroup = ObjConn.Execute("SELECT * FROM groups WHERE id="& CLng(Request.Querystring("groupid")) &"")
Set ObjRSGrouptrad = ObjConn.Execute("SELECT * FROM group_tradar WHERE group_id="& Request.Querystring("groupid") &" AND klistrad=0")
Set ObjRSGroupklis = ObjConn.Execute("SELECT * FROM group_tradar WHERE group_id="& Request.Querystring("groupid") &" AND klistrad=1")
%>
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[MySQL][ODBC 3.51 Driver][mysqld-5.0.45-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND klistrad=0' at line 1
/group_forumet.asp, line 25
JeppewebMedlem sedan sep. 2006512 inlägg
Klistrad är en typ "INT 11" i databasen
@ndersMedlem sedan juni 200026 914 inlägg
- Ställ frågor om SQL i SQL-forumet.
- Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera den. Då ser du om det saknas något eller om något värde ser konstigt ut.
JeppewebMedlem sedan sep. 2006512 inlägg
Och hur skulle den response.write se ut då? Jag gjorde en, men man kan ju varken sätta den före den kod jag skrev tidigare, eller under då man får error.
@ndersMedlem sedan juni 200026 914 inlägg
Skriv ut istället för att exekvera - inte samtidigt.
strSQL = "SELECT * FROM group_tradar WHERE group_id="& Request.Querystring("groupid") &" AND klistrad=0"
Response.write strSQL
response.end
JeppewebMedlem sedan sep. 2006512 inlägg
nu fick jag fram
SELECT * FROM group_tradar WHERE group_id= AND klistrad=0
@ndersMedlem sedan juni 200026 914 inlägg
Då ser du vad som är fel.
JeppewebMedlem sedan sep. 2006512 inlägg
Precis, hur kommer det sig att den inte får ett groupid ?
@ndersMedlem sedan juni 200026 914 inlägg
Du har inte skickat något i querystring? :)
aasahMedlem sedan mars 20033 451 inlägg
Jeppeweb skrev:
Precis, hur kommer det sig att den inte får ett groupid ?
Därför att Request.Querystring("groupid") är tom.
JeppewebMedlem sedan sep. 2006512 inlägg
TroxyMedlem sedan mars 20041 508 inlägg
Du bör söka efter "SQL-injection" och läsa på om det eftersom din kod lider av denna typ av säkerhetshål.
JeppewebMedlem sedan sep. 2006512 inlägg
Nej, det gör den inte? Jag kör skydd från en annan fil som inkluderas på varje sida.
@ndersMedlem sedan juni 200026 914 inlägg
Det påverkar ju inte att du har säkerhetshål i dina SQL-frågor. Som sagt - sök på SQL injection.
JeppewebMedlem sedan sep. 2006512 inlägg
Googlade men blev inte så mycket klokare.
Har den här koden säkerhetshål?
<%
If not session("inloggad") = "ja" Then
Response.Redirect "?visa=start"
End If
%>
<%
Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& Request.Querystring("userid") &"")
If ObjRS.Eof then
Response.Redirect "?visa=start"
End If
%>
<%
Set ObjRSCheckit = ObjConn.Execute("SELECT * FROM visitors WHERE fromid="& CLng(Session("id")) &" AND tillid="& CLng(ObjRS("id")) &"")
%>
<%If ObjRSCheckit.eof then%>
<%
ObjConn.Execute("INSERT INTO visitors (tillid, tillanv, fromid, fromanv, datum) VALUES ('"& ObjRS("id") &"', '"& ObjRS("anvnamn") &"', '"& Session("id") &"', '"& Session("anvnamn") &"', '"& now() &"')")
%>
<%Else%>
<%
ObjConn.Execute("UPDATE visitors set datum='"&now()&"' WHERE tillid="& CLng(ObjRS("id")) &" AND fromid="& CLng(Session("id")) &"")
%>
<%End If%>
<%
ObjConn.Execute("UPDATE medlemmar set online_tid='"&now()&"', online_act='Kollar in användaren "& ObjRS("anvnamn") &"' where anvnamn='"& session("anvnamn") &"'")
%>
<%
If DateDiff("n", ObjRS("online_tid"), Now) > 15 Then
ObjConn.Execute("UPDATE medlemmar set online='0' where anvnamn='"& ObjRS("anvnamn") &"'")
End If
%>
JeppewebMedlem sedan sep. 2006512 inlägg
Skulle man kunna göra det här säkrare?
Function fixbug(strText)
strText = Replace(strText,"'","''")
strText = Replace(strText,"\","\\")
fixbug = strText
End Function
Function noHTML(ByVal text)
text = Replace(Server.HTMLEncode(text),vbCrlf,"")
noHTML = text
End Function
Och det här..?
<%
Function IsAnvnamn(strValue)
With New RegExp
.Pattern="^[0-9A-Za-z_-]+$"
IsAnvnamn=.Test(strValue)
End With
End Function
%>
<%
Function IsEmail(strValue)
With New RegExp
.Pattern="^[^ ]+@[^ ]+\.[A-Za-z]+$"
IsEmail=.Test(strValue)
End With
End Function
%>
Tacksam för hjälp
@ndersMedlem sedan juni 200026 914 inlägg
Du har ju en funktion som heter fixbug() - varför använder du inte den?
JeppewebMedlem sedan sep. 2006512 inlägg
Okej, jadu. Hur skulle det se ut ifall jag använde den? Ha.
Uppenbarligen så var inte den koden skyddad heller? Vad ska jag ha för att få den bästa möjliga skyddad?
aasahMedlem sedan mars 20033 451 inlägg
Jeppeweb skrev:
Har den här koden säkerhetshål?
SELECT * FROM medlemmar where id="& Request.Querystring("userid")
Ja. För att ta första bästa enkla exempel. Ponera att Querystring innehåller följande:
"0 OR 1=1"
Nu får du ut alla medlemmar. Det kan bli avsevärt värre....
JeppewebMedlem sedan sep. 2006512 inlägg
Hur ska jag skydda mig då!?