webForumDet fria alternativet

Söka med '

ASP

40 svar · 1 401 visningar · startad av Lorelie · sida 2 av 3

Frågan, av Lorelie

På min sida har jag en sökfunktion som inte kan söka med ' i namnet, hur gör man för att det ska gå att göra? (<https://www.aramennoc.se> \- \> databasen)

Läs frågan i sin helhet →
Medlem sedan dec. 20025 483 inlägg
#21

Sedan känns det som att några villkor är onödiga

SQL = 	"SELECT 	namn,	" & _
	"hast_id,		" & _
	"bild_url		" & _
	"FROM 	hast 	" & _
	"WHERE 		kon = '"& SafeSQL(Request.Form("kon")) &"' 	      " & _
	"AND 		namn  like  '" & SafeSQL(Request.Form("hast"))&"%'  " & _
	"AND 		ras      =	   'Connemara'		       " & _
	"ORDER BY 	namn				        "
Medlem sedan juni 20019 519 inlägg
#22

Som peter S skriver... känns som dom andra "villkoren" är onödiga.. varför är E och U och   i villkoren?

Medlem sedan juni 2005264 inlägg
#23

voigtann1 skrev:

Som peter S skriver... känns som dom andra "villkoren" är onödiga.. varför är E och U och   i villkoren?

e och u ska man inte kunna söka på, och inte heller  , därför är de med
e och u är själva botten i en stamtavla, dvs där det inte finns mer.

http://www.aramennoc.se/hast.asp?hast_id=4854
Där det är - är det e eller u

Har olika söksidor för olika saker. Just denna sidan vi fixat till nu är för att söka på svenska connemaraponnyer, så igentligen är Ras <>/okänd/Övrig onödigt att ha med, eftersom man bara får med de som har rasen "Connemara". Det är med bara för att jag kopierat sidan 8 gånger och bara ändrat det som ska ändras för att få olika sökvilkor på olika sidor.
Krångligt, javisst, men jag har inte kommit på något bättre sätt =S
(https://www.aramennoc.se -> Databasen, prova gärna och se om ni förstår vad man ska göra osv, det är lätt att bli hemmablind)

Medlem sedan juni 20019 519 inlägg
#24

du kan ju:

'Sök strängen måste vara längre än 2 eller mer tecken långt...
if len(request.form("hast") >= 2 Then
....all SQL och presentation av datan..
else
response.write "Ditt sökord måste vara längre än 2 tecken långt"
end if

... eller kör med det du har nu.. ;)

Medlem sedan juni 2005264 inlägg
#25

voigtann1 skrev:

du kan ju:

'Sök strängen måste vara längre än 2 eller mer tecken långt...
if len(request.form("hast") >= 2 Then
....all SQL och presentation av datan..
else
response.write "Ditt sökord måste vara längre än 2 tecken långt"
end if

... eller kör med det du har nu.. ;)

Bad idea :p jag söker ofta på alltihop, dvs skriver inget i rutan så får man upp hela listan.

Har funderingar på att göra en avancerad sökfunktion, dvs man ska kunna söka på de flesta fälten i databasen. Men det får bli en annan gång...

Medlem sedan dec. 19996 721 inlägg
#26

Kom ihåg att använda SafeSQL på alla textvärden som kommer in i frågan, även Request.Form("kon")

Medlem sedan juni 2005264 inlägg
#27

emission skrev:

Kom ihåg att använda SafeSQL på alla textvärden som kommer in i frågan, även Request.Form("kon")

Behövs det verkligen? "kon" är inget man skriver, man väljer med radioknappar Hingst, Sto eller Valack

Medlem sedan dec. 20025 483 inlägg
#28

Det är ändå möjligt att manipulera de värdena.

Medlem sedan juni 20019 519 inlägg
#29

Som Peter skriver, det är möjligt.... jag kan ju exempelvis skapa en inputbox på en sida som skickas till din med en SQL injection hack på kon ... så skyddar dig.. på så mycket du kan.

Medlem sedan dec. 19996 721 inlägg
#30

Lorelie skrev:

Behövs det verkligen? "kon" är inget man skriver, man väljer med radioknappar Hingst, Sto eller Valack

SafeSQLs huvudsakliga syfte är inte att göra så att sökningen fungerar med ' , utan att skydda din databas från att förstöras av illvilliga människor. Sök på "SQL injection", för exempel.

Medlem sedan juni 2005264 inlägg
#31

Nu har jag stött på problem på en annan sida, ett formulär där man ska kunna lägga in hästar på hemsidan, även där behöver jag kunna skriva ', har gjort likadant som på söksidan jag fått hjälp med här, men det fungerar inte


Function SafeSQL(strText)
    SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
End Function

...

sql = "insert into hast (namn, kon, reg_nr, stamboks_nr, ras, fodd, dod, farg, tecken, mankh, pappa, mamma, uppf, utlstbnr, inskickad_av, inskickad_av_mail, hemsida, ovrigt, diplom_ar, diplompoang, elit_ar, prem, prem_poang,utlatande, imp, exp, bild_url) values [B]('" & request.form("namn") [/B] & "','" & SafeSQL(request.form("kon"), "'", "''") & "','" & SafeSQL(request.form("reg_nr"), "'", "''") & "', '" & SafeSQL(request.form("stamboks_nr"), "'", "''") & "' ,  '" & SafeSQL(request.form("ras"), "'", "''") & "' ,'" & SafeSQL(request.form("fodd"), "'", "''") & "','" & SafeSQL(request.form("dod"), "'", "''") & "' ,'" & SafeSQL(request.form("farg"), "'", "''") & "','" & SafeSQL(request.form("tecken"), "'", "''") & "' ,'" & SafeSQL(request.form("mankh"), "'", "''") & "' ,'" & SafeSQL(request.form("pappa"), "'", "''") & "' ,'" & SafeSQL(request.form("mamma"), "'", "''") & "' ,'" & SafeSQL(request.form("uppf"), "'", "''") & "' ,'" & SafeSQL(request.form("utlstbnr"), "'", "''") & "', '" & SafeSQL(request.form("inskickad_av"), "'", "''") & "', '" & SafeSQL(request.form("inskickad_av_mail"), "'", "''") & "', '" & SafeSQL(request.form("hemsida"), "'", "''") & "',  '" & SafeSQL(request.form("ovrigt"), "'", "''") & "',  '" & SafeSQL(request.form("diplom_ar"), "'", "''") & "' ,  '" & SafeSQL(request.form("diplompoang"), "'", "''") & "'  ,  '" & SafeSQL(request.form("elit_ar"), "'", "''") & "' ,  '" & SafeSQL(request.form("prem"), "'", "''") & "' ,  '" & SafeSQL(request.form("prem_poang"), "'", "''") & "' ,  '" & SafeSQL(request.form("utlatande"), "'", "''") & "' ,  '" & SafeSQL(request.form("imp"), "'", "''") & "' ,  '" & SafeSQL(request.form("exp"), "'", "''") & "',  '" & SafeSQL(request.form("bild_url"), "'", "''") & "')"

Där jag skrivit med fet stil vet jag inte hur jag ska få in SafeSQL, har försökt göra likadant som på de andra, dvs lägga till parantes och "', där det finns på de andra, men det fungerar inte.

Får felmeddelandet
Wrong number of arguments or invalid property assignment: 'SafeSQL'
/laggtill.asp, line 37

(både när jag har SafeSQL på namn och inte)

Medlem sedan juni 2005264 inlägg
#32

emission skrev:

SafeSQLs huvudsakliga syfte är inte att göra så att sökningen fungerar med ' , utan att skydda din databas från att förstöras av illvilliga människor. Sök på "SQL injection", för exempel.


"WHERE 	kon = 	   '"& SafeSQL(Request.Form("kon")) &"' 	    " & _
"AND 	namn  like  '" & SafeSQL(Request.Form("hast"))&"%' 	 " & _

Är det bara de två som behöver ha SafeSQL?
http://www.aramennoc.se/sok.htm Så ser sidan där man söker ut

Medlem sedan juni 20019 519 inlägg
#33

jepp

Medlem sedan juni 2005264 inlägg
#34

voigtann1 skrev:

jepp

Vad tror du om min andra fråga då?

Medlem sedan juni 20019 519 inlägg
#35

SafeSQL är en funktion... där du vill använda den skriver du SafeSQL framför de värde du vill "göra" om till en säker SQL sträng.
Lite Exemplen:

dim aString
aString ="He's here" ' Denna sträng MÅSTE vi göra om!
aString = SafeSQL(aString) ' Nu har vi kört SQLSafe på aString och skrivit den nya strängen till variablen aString igen.

dim RequestString
RequestString = request.Form("mm") 'mm innehåller från en post strängen "My mother's Father" dvs vi måste göra om strängen så att den passar in så att vi kan lägga in den i SQL:en

RequestString = safeSQL(request.form("mm"))

'Eller i en SQL fråga:
SQL = "INSERT INTO users (username) values ('" & safeSQL(request.form("mm")) & "')"

Dvs ALLA värden som kan ändras på något sätt är en risk, den risken kan du säkra lite bättre med om du vet hur du ska säkra dom. Sök på SQLInjection på google och läs om databas säkerhet.

Medlem sedan juni 20019 519 inlägg
#36

i Din Insert fråga tänker du fel. Din safeSQL funktion kan bara innehålla 1 sträng sen fixar den strängen.
dvs:

safeSQL(request.form(".."),"'","''")

är fel
medans

safeSQL(request.form(".."))

är rätt.

Medlem sedan juni 2005264 inlägg
#37

voigtann1 skrev:

i Din Insert fråga tänker du fel. Din safeSQL funktion kan bara innehålla 1 sträng sen fixar den strängen.
dvs:

safeSQL(request.form(".."),"'","''")

är fel
medans

safeSQL(request.form(".."))

är rätt.

När jag la in det så får jag felmeddelandet

"Wrong number of arguments or invalid property assignment: 'SafeSQL'"

Felet sitter här står det:


sql = "insert into hast (namn, kon, reg_nr, stamboks_nr, ras, fodd, dod, farg, tecken, mankh, pappa, mamma, uppf, utlstbnr, inskickad_av, inskickad_av_mail, hemsida, ovrigt, diplom_ar, diplompoang, elit_ar, prem, prem_poang,utlatande, imp, exp, bild_url) values ('" & request.form("namn") & "','" & SafeSQL(request.form("kon"), "'", "''") & "','" & SafeSQL(request.form("reg_nr"), "'", "''") & "', '" & SafeSQL(request.form("stamboks_nr"), "'", "''") & "' ,  '" & SafeSQL(request.form("ras"), "'", "''") & "' ,'" & SafeSQL(request.form("fodd"), "'", "''") & "','" & SafeSQL(request.form("dod"), "'", "''") & "' ,'" & SafeSQL(request.form("farg"), "'", "''") & "','" & SafeSQL(request.form("tecken"), "'", "''") & "' ,'" & SafeSQL(request.form("mankh"), "'", "''") & "' ,'" & SafeSQL(request.form("pappa"), "'", "''") & "' ,'" & SafeSQL(request.form("mamma"), "'", "''") & "' ,'" & SafeSQL(request.form("uppf"), "'", "''") & "' ,'" & SafeSQL(request.form("utlstbnr"), "'", "''") & "', '" & SafeSQL(request.form("inskickad_av"), "'", "''") & "', '" & SafeSQL(request.form("inskickad_av_mail"), "'", "''") & "', '" & SafeSQL(request.form("hemsida"), "'", "''") & "',  '" & SafeSQL(request.form("ovrigt"), "'", "''") & "',  '" & SafeSQL(request.form("diplom_ar"), "'", "''") & "' ,  '" & SafeSQL(request.form("diplompoang"), "'", "''") & "'  ,  '" & SafeSQL(request.form("elit_ar"), "'", "''") & "' ,  '" & SafeSQL(request.form("prem"), "'", "''") & "' ,  '" & SafeSQL(request.form("prem_poang"), "'", "''") & "' ,  '" & SafeSQL(request.form("utlatande"), "'", "''") & "' ,  '" & SafeSQL(request.form("imp"), "'", "''") & "' ,  '" & SafeSQL(request.form("exp"), "'", "''") & "',  '" & SafeSQL(request.form("bild_url"), "'", "''") & "')"
Medlem sedan juni 20019 519 inlägg
#38

Du har fortfarande inte ändrat om dina värden...

sql = "insert into hast (namn, kon, reg_nr, stamboks_nr, ras, fodd, dod, farg, tecken, mankh, pappa, mamma, uppf, utlstbnr, inskickad_av, inskickad_av_mail, hemsida, ovrigt, diplom_ar, diplompoang, elit_ar, prem, prem_poang,utlatande, imp, exp, bild_url) values ('" & SafeSQL(request.form("namn"))  & "','" & SafeSQL(request.form("kon")) & "','" & SafeSQL(request.form("reg_nr")) & "', '" & SafeSQL(request.form("stamboks_nr")) & "' ,  '" & SafeSQL(request.form("ras")) & "' ,'" & SafeSQL(request.form("fodd")) & "','" & SafeSQL(request.form("dod")) & "' ,'" & SafeSQL(request.form("farg")) & "','" & SafeSQL(request.form("tecken")) & "' ,'" & SafeSQL(request.form("mankh")) & "' ,'" & SafeSQL(request.form("pappa")) & "' ,'" & SafeSQL(request.form("mamma")) & "' ,'" & SafeSQL(request.form("uppf")) & "' ,'" & SafeSQL(request.form("utlstbnr")) & "', '" & SafeSQL(request.form("inskickad_av")) & "', '" & SafeSQL(request.form("inskickad_av_mail")) & "', '" & SafeSQL(request.form("hemsida")) & "',  '" & SafeSQL(request.form("ovrigt")) & "',  '" & SafeSQL(request.form("diplom_ar")) & "' ,  '" & SafeSQL(request.form("diplompoang")) & "'  ,  '" & SafeSQL(request.form("elit_ar")) & "' ,  '" & SafeSQL(request.form("prem")) & "' ,  '" & SafeSQL(request.form("prem_poang")) & "' ,  '" & SafeSQL(request.form("utlatande")) & "' ,  '" & SafeSQL(request.form("imp")) & "' ,  '" & SafeSQL(request.form("exp")) & "',  '" & SafeSQL(request.form("bild_url")) & "')"

... du kan inte skrive exempelvis: safeSQL(...,"'","'''")...

Du blandar ihop Replace och din egna funktion..

Medlem sedan juni 2005264 inlägg
#39

voigtann1 skrev:

Du har fortfarande inte ändrat om dina värden...

sql = "insert into hast (namn, kon, reg_nr, stamboks_nr, ras, fodd, dod, farg, tecken, mankh, pappa, mamma, uppf, utlstbnr, inskickad_av, inskickad_av_mail, hemsida, ovrigt, diplom_ar, diplompoang, elit_ar, prem, prem_poang,utlatande, imp, exp, bild_url) values ('" & SafeSQL(request.form("namn"))  & "','" & SafeSQL(request.form("kon")) & "','" & SafeSQL(request.form("reg_nr")) & "', '" & SafeSQL(request.form("stamboks_nr")) & "' ,  '" & SafeSQL(request.form("ras")) & "' ,'" & SafeSQL(request.form("fodd")) & "','" & SafeSQL(request.form("dod")) & "' ,'" & SafeSQL(request.form("farg")) & "','" & SafeSQL(request.form("tecken")) & "' ,'" & SafeSQL(request.form("mankh")) & "' ,'" & SafeSQL(request.form("pappa")) & "' ,'" & SafeSQL(request.form("mamma")) & "' ,'" & SafeSQL(request.form("uppf")) & "' ,'" & SafeSQL(request.form("utlstbnr")) & "', '" & SafeSQL(request.form("inskickad_av")) & "', '" & SafeSQL(request.form("inskickad_av_mail")) & "', '" & SafeSQL(request.form("hemsida")) & "',  '" & SafeSQL(request.form("ovrigt")) & "',  '" & SafeSQL(request.form("diplom_ar")) & "' ,  '" & SafeSQL(request.form("diplompoang")) & "'  ,  '" & SafeSQL(request.form("elit_ar")) & "' ,  '" & SafeSQL(request.form("prem")) & "' ,  '" & SafeSQL(request.form("prem_poang")) & "' ,  '" & SafeSQL(request.form("utlatande")) & "' ,  '" & SafeSQL(request.form("imp")) & "' ,  '" & SafeSQL(request.form("exp")) & "',  '" & SafeSQL(request.form("bild_url")) & "')"

... du kan inte skrive exempelvis: safeSQL(...,"'","'''")...

Du blandar ihop Replace och din egna funktion..

Men vad ska jag skriva då? Ska det se ut såhär? '"& SafeSQL(Request.Form("kon")) &"'

Medlem sedan juni 20019 519 inlägg
#40

ja

273 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)