webForumDet fria alternativet

SQL Syntax

ASP

35 svar · 999 visningar · startad av Jeppeweb · sida 2 av 2

Frågan, av Jeppeweb

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 grouptradar WHERE groupid="& Request.Querystring("groupid") &" AND klistrad=0") Set ObjRSGroupklis = ObjConn.Execute("SELECT FROM grouptradar WHERE groupid="& Request.Querystring("gro

Läs frågan i sin helhet →
Medlem sedan juni 200032 967 inlägg
#21

Alltså - du kan ha hur många funktioner som helst i include-filer, men om du inte kallar på funktionen så körs den ju inte. Exempel:

strSQL = "SELECT * FROM foo WHERE id = " & fixbug(Request.Querystring("userid"))

Jag vet inte om du måste escape:a backslash som du gjort i funktionen fixbug(), det skulle i så fall vara något som är specifikt för MySQL.

Använd funktionen fixbug() (och byt gärna namn på funktionen) på de värden som skall in i SQL-frågor.

Man kan också titta på parametriserade sql-frågor, men det kan ju vara nästa steg.

Medlem sedan juni 20019 519 inlägg
#22

tal = Clng(Request.QueryString("UserId"))
sträng: fixbug(Request.Querstring("text"))

Medlem sedan sep. 2006462 inlägg
#23

Blir lite förvirrad nu.
Så det här skulle vara korrekt?

Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& fixbug(Request.Querystring("userid") &""))
Medlem sedan mars 20034 471 inlägg
#24

Jeppeweb skrev:

Blir lite förvirrad nu.
Så det här skulle vara korrekt?

Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& fixbug(Request.Querystring("userid") &""))

Nej, det är bara Querystringen som ska in till fixBug(). Det är ju bara i den delen du inte vet vad det står...

Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& fixbug(Request.Querystring("userid")) &"")

(Flyttat ett ')'.)

Medlem sedan sep. 2006462 inlägg
#25

För ni säger olika, voigtann, Clng på Userid, och @nders, fixbug på Userid..

Gah.

Medlem sedan mars 20034 471 inlägg
#26

Jeppeweb skrev:

För ni säger olika, voigtann, Clng på Userid, och @nders, fixbug på Userid..

Gah.

Kolla ovanför ditt citerade inlägg. :)

vo1gtanns förslag var att du skulle hantera siffror på ett sätt och strängar på ett annat. MEN då måste du först veta att användaren skrivit in en siffra där du förväntar dig det. Vilket blir ytterligare en koll... som måste in före. (Såvida inte Clng fixar biffen om det kommer in en sträng? Jag kan inte ASP.) Så det blir enklare att behandla allt som strängar. Dock är du inte lika säker på att du får in vettig indata.

MySQL blir inte glad om den får fel typer att jämföra med... Så du riskerar databasfelmeddelanden om man kan stoppa in en sträng där det borde vara en siffra. (Tror jag... själv kollar jag om det är siffror där det ska vara det...)

Medlem sedan juni 20019 519 inlägg
#27

Nej.. jag säger att Om det är ett tal så Kontrollera/konvertera det till ett tal. Och Fixbug använder du på strängar. Jag har ingen aning om ditt UserId är ett tal eller inte.. jag kan bara gissa att det är ett tal. Jag kan ha fel.

Den kommer att crashar men din databas är iallafall inte öppen mot "attacker".

Medlem sedan sep. 2006462 inlägg
#28

Okej.

Hur ska det här se ut då?

<%
Set ObjRSCheckit = ObjConn.Execute("SELECT * FROM visitors WHERE fromid="& CLng(Session("id")) &" AND tillid="& CLng(ObjRS("id")) &"")
%>

Alla Querystringar ska bytas ut som du skrev aasah, då är jag någorlunda skyddad eller?

Medlem sedan juni 200032 967 inlägg
#29

Syftet är ungefär detsamma. Tänk efter lite vad koden gör.
Clng konverterar någonting till ett tal. Skickar man in en konstig sträng kraschar den typkonverteringen och sql-frågan ställs inte - därmed är användarid-variabeln säkrad.
Fixbug-funktionen escapear apostrof-tecken och gör därmed så inte elaka människor kan kapa dina SQL-frågor.

Det är inte heller fel att göra både typkonvertering och escape:a strängar.

Det finns hur mycket vettigt som helst att läsa så man förstår hur och varför. Börja till exempel på wikipedia och följ länkarna där.

Medlem sedan mars 20034 471 inlägg
#30

Jeppeweb skrev:

Alla Querystringar ska bytas ut som du skrev aasah, då är jag någorlunda skyddad eller?

Ta till dig det @nders skrev, och ja - så fort du plockar in info som en användare på något sätt har tillgång till i en SQL-fråga, måste du säkra indatat.

"Info som en användare på något sätt har tillgång till" inkluderar Querystring och Cookies.

Medlem sedan sep. 2006462 inlägg
#31

Okej, tack då är jag någorlunda med känner jag.

ObjConn.Execute("UPDATE medlemmar set online='0' where anvnamn='" & fixbug & ObjRS("anvnamn") &"'")

Är det där korrekt?

Medlem sedan juni 200032 967 inlägg
#32

njäe... Funktioner kallar du ju på med parenteser.

ObjConn.Execute("UPDATE medlemmar set online='0' where anvnamn='" & fixbug(ObjRS("anvnamn")) &"'")
Medlem sedan sep. 2006462 inlägg
#33

Jaha, okej. :)
Du tyckte jag borde bytta namn på fixbug också? Why's that?

Hur står hashning/kryptering utav lösenord på en skala utav säkerhet? Är det jättebra att ha?

Medlem sedan juni 20019 519 inlägg
#34

Fixbug säger inte så mycket vad den gör... fix what bug? SecureSqlString eller något liknande kanske?
Kryptering är alltid bra för dina användare. Du får utveckla lite vad du menar med det? Vill du kryptera all data så måste du på något sätt kunna backa tillbaka datan igen. Lösenord / Personnummer osv är aldrig bra att lagra i klar text.

Medlem sedan juni 200032 967 inlägg
#35

Jeppeweb skrev:

Du tyckte jag borde bytta namn på fixbug också? Why's that?

För att jag hatar funktioner som är felaktigt namngivna. Funktionen fixar inga buggar överhuvudtaget, utan säkrar input till SQL-frågor. Funktionen kanske skulle kunna heta EscapeStringForSQL eller SQLSafe om man vill ha lite kortare namn.

Medlem sedan sep. 2006462 inlägg
#36

Okej, jag hade tänkt att kryptera lösenord. Ska fixa det.

Okej, har döpt om fixbug till SQLSafe på @nders begäran. Du har rätt, det klingar bättre. :)

Uppskattar verkligen hjälpen man får här.

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)