webForumDet fria alternativet

Inmatningssäker databas

10 svar · 401 visningar · startad av Klauz

KlauzMedlem sedan jan. 2005133 inlägg
#1

Försöker göra en inmatningssäker valideringsfunktion! Har kommit såhär långt, men har fortfarande problem.

<% Function ReplaceSpecialChars(arg)
strReplaceTemp = arg
If not isNull(strReplaceTemp) then
strReplaceTemp = replace(strReplaceTemp,"&","och")
strReplaceTemp = replace(strReplaceTemp,"<","")
strReplaceTemp = replace(strReplaceTemp,">","")
strReplaceTemp = replace(strReplaceTemp,"'","''")
strReplaceTemp = replace(strReplaceTemp,"""",""")
End if
ReplaceSpecialChars = strReplaceTemp
strReplaceTemp = ""
End function %>

Databasen för inmatningarna är en Access-db. Det går fortfarnade inte att infoga " (citattecken) , vet inte vad som är fel. Har testat med både ' och " - tecken. Det går ju inte att köra Replace(string, """, "'"), finns det nåt alternativ?

Ge gärna tips på fler osäkra tecken som jag kan Replace:a i funktionen! :)

@ndersMedlem sedan juni 200032 969 inlägg
#2

Re: Inmatningssäker databas

Jag förstår inte varför du replacear <, >, & och ".
Av de tecknen du har i din funktion kan jag inte se att något annat än apostrof skulle vara farligt att mata in i databasen.

Jag skulle alltså tagit bort de ersättningarna.

Sedan: snälla, använd [kod]-taggar när du postar kod, så går koden lättare att läsa.

mvh

mrblondeMedlem sedan aug. 20012 349 inlägg
#3

Du behöver bara ta hand om ' när du sparar data. Sen när du skall visa det på din webbsida så använd Server.HTMLEncode(strDinVariablemMedData) så ser den till att inte <> mm blir problematiskt.

KlauzMedlem sedan jan. 2005133 inlägg
#4

Alright, tack för tipset med HTMLEncode!

Anledningen till de "onödiga" tecknen är att den även ska funka att skicka innehållet till Flash-filer. Där brukar &-tecknet strula till det.

Ska bättra mig när det gäller att visa kodsnuttar! :r

@ndersMedlem sedan juni 200032 969 inlägg
#5

Klauz skrev:

Anledningen till de "onödiga" tecknen är att den även ska funka att skicka innehållet till Flash-filer. Där brukar &-tecknet strula till det.

Du bör i alla fall inte förstöra datat innan du stoppar in det i databasen. Gör förändringarna endast vid "utskriften" till flash-filen. Server.HTMLEncode som mrblonde tipsar om borde ta hand om det mesta. :)

mvh

K@llenMedlem sedan mars 20032 667 inlägg
#6

mrblonde skrev:

Du behöver bara ta hand om ' när du sparar data. Sen när du skall visa det på din webbsida så använd Server.HTMLEncode(strDinVariablemMedData) så ser den till att inte <> mm blir problematiskt.

Inte enligt detta svar:
http://www.webforum.nu/showthread.php?s=&postid=980558#post980558

Ser fram emot en mer utförlig beskrivning från emissions sida. För detta har också varit min tro. :)

KlauzMedlem sedan jan. 2005133 inlägg
#7

htmlencode

ok , är det dumt att köra Server.HTMLEncode när man infogar datan i db istället för när man skriver ut den?

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#8

Är det numeriska, booleanska eller datumvärden så blir det ju en annan femma. Dock löser det sig oftast om man gör en typskonvertering.
Ett annat fall där det kan blir problem:

sql = "SELECT * FROM tblFoo ORDER BY " & Request("OrderBy")
Erik JuhlinMedlem sedan maj 200010 687 inlägg
#9

Klauz: Ja. Modifiera inte datan innan du stoppar in den i databasen.

@ndersMedlem sedan juni 200032 969 inlägg
#10

Ja, det är dumt att förändra datat. Datat tar mer plats och är inte lika sökbart om du förstör innehållet.

Mvh

KlauzMedlem sedan jan. 2005133 inlägg
#11

Tack då vet jag! :)

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
129 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)