/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
til Jesper Stocholm og F.Larsen
Fra : Brian Gregersen


Dato : 22-01-03 09:47

Hej Jepser og F.
I har tidligere hjulpet med dette problem

indsæt data i database via formular

Det blev løst sådan
FUNCTION fixQuotes( theString )
fixQuotes = Replace( theString, "'", "''" )
END FUNCTION

SQL = "[....) values('" & fixQuotes(Request.Form("Fornavn"))
...........osv

Mit problem nu er at de 2 sidste felter er valgfri.

se http://www.otk.dk/crossdu03/tilmeld/

Hvordan gør man det?

bliver de ikke udfyldt giver det fejl i
Conn.Execute(SQL)
Håber i kan hjælpe
Undskyld den lidt kringlede overskrift jeg ved det ikke er god
kutyme i dette herlige forum, men mit svar haster en smule.

Hilsen
Brian


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
CoHeN King (22-01-2003)
Kommentar
Fra : CoHeN King


Dato : 22-01-03 09:58

Brian Gregersen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Hej Jepser og F.
> I har tidligere hjulpet med dette problem
>
> indsæt data i database via formular
>
> Det blev løst sådan
> FUNCTION fixQuotes( theString )
> fixQuotes = Replace( theString, "'", "''" )
> END FUNCTION
>
> SQL = "[....) values('" & fixQuotes(Request.Form("Fornavn"))
> ...........osv
>
> Mit problem nu er at de 2 sidste felter er valgfri.
>
> se http://www.otk.dk/crossdu03/tilmeld/
>
> Hvordan gør man det?


en hurtig løsning er at udfylde en value i feltet eks Valg frit

så skrive den bare valg frit i din db

Cohen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 10:23

Brian Gregersen skrev:

> FUNCTION fixQuotes( theString )
> fixQuotes = Replace( theString, "'", "''" )
> END FUNCTION

Forslag:

Function fixQuotes( theString )
   If IsNull( theString )
       fixQuotes = ""
   Else
       fixQuotes = Replace( theString, "'", "''" )
   End If
End Function   

Alternativt kan du sikre dig mod nullværdier ved
variabeltildelingen - se
<news:Xns930B6519413A6jcdmfdk@gyrosmod.dtext.news.tele.dk>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

F.Larsen (22-01-2003)
Kommentar
Fra : F.Larsen


Dato : 22-01-03 12:43

"Brian Gregersen" <bgr@chem.sdu.dk> wrote in message
news:b0llpc$q9n$1@sunsite.dk...
>
> SQL = "[....) values('" & fixQuotes(Request.Form("Fornavn"))
> ..........osv

Du slås med nogle umiddelbare fejl - men når du har rette dem vil du løbe
ind i andre problemer med bla sikkerheden og robustheden af dit program.

Den metode som du anvender til at opbygge din SQL sætning, hvor du bruger
Request.form uden yderligere validering er mildest talt "uforsvarlig" :=)

Mit forslag er at du sætter dig ned og laver et "ordenligt" design ... ikke
særlig svært - men du vil få et robust program som også sikkerhedsmæssigt
vil være i orden. Jeg ved at det kan være svært "det virker jo næsten" ...
men i den sidste ende vil du have et bedre resultat og du vil i længden have
brugt mindre tid.

Her er en mulig struktur/metode:

1) indlæs alle dine html form data i lokale variable
eks.: strForNavn = Request.Form("Fornavn")

2) validere ALLE inddata (også skjulte felter), noget a la:
If (strForNavn<>"") Then
response.write("Fejl: fornavn skal udfyldes")
ElseIf Len(strForNavn)>128 Then
response.write("Fejl: fornavn er for langt")
ElseIf
....
ElseIf NOT isNumeric(intAlder) Then
....
Else
''' input er valideret til at være OK -- !
strSQL = "INSERT INTO .... " &FixQoutes(strFornavn)
End If

3) dobbelt quote alle vaiable (her bruger du din funktion du lavede)

Der er forskellige programmeringsteknikker til at lette valideringsarbejdet,
f.eks. lave nogle nyttige underfunktioner, men det er ikke så vigtigt for
selve designet/strukturen.

PS: det er god skik at svare i samme tråd som det oprindelige spørgsmål.
http://www.usenet.dk/info/skriveteknik.html

PPS: hvorfor anvender du ikke en ordenlig nyhedsreader istedet for det der
web interafce :=) (OE kan læse nyhedsgrupper helt fint)
http://www.usenet.dk/info/msoe.html

se mere her:
http://www.usenet.dk

--
Flemming
http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/






Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 13:08

F.Larsen skrev:

>> SQL = "[....) values('" & fixQuotes(Request.Form("Fornavn"))
>> ..........osv

> Den metode som du anvender til at opbygge din SQL sætning,
> hvor du bruger Request.form uden yderligere validering er
> mildest talt "uforsvarlig" :=)

I ovenstående SQL-sætning _er_ der da basal validering - nemlig med
funktionen fixQuotes. Jeg skal gerne medgive at der kan være god
grund til at validere mere end blot for anførselstegn, men bruger
man blot basal erstatning af anførselstegn har man allerede sikret
sig mod alvorlige uheld.

De fejl der kan opstå på trods af en sådan validering vil ikke have
betydning for selve sidens stabilitet - man vil ikke, hverken
bevidst eller uforvarende kunne få forkerte data ind eller ud af
databasen.


> Der er forskellige programmeringsteknikker til at lette
> valideringsarbejdet,

Jeg kan ikke nære mig for at nævne asp.net, hvor man har adgang til
en hel række foruddefinerede valideringskontroller. Det er mange
gange lettere at arbejde med end standard asp-validering.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

F.Larsen (22-01-2003)
Kommentar
Fra : F.Larsen


Dato : 22-01-03 13:33

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns930B858408175jcdmfdk@gyrosmod.dtext.news.tele.dk...
> >> SQL = "[....) values('" & fixQuotes(Request.Form("Fornavn"))
> I ovenstående SQL-sætning _er_ der da basal validering - nemlig med
> funktionen fixQuotes. Jeg skal gerne medgive at der kan være god
> grund til at validere mere end blot for anførselstegn, men bruger
> man blot basal erstatning af anførselstegn har man allerede sikret
> sig mod alvorlige uheld.

Quoting af strenge betragter jeg ikke som input validering men
datakonvertering nødvendig for at indsætte i databasen på lige fod med dato
konvertering i forhold til brugerindtastninger som også skal overholde visse
syntaksmæssige regler.

Jeg har været inde og kigge på Brians side og den brager ned for et godt ord
.....

Mangel på InputValidering er en ofte forekommen "forglemmelse" hos udviklere
... hvilket som "sideeffekt" kan afstedkomme en hel del sikkerhedsmæssige
problemer (kig selv på computerworld.dk :=)

--
Flemming
http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/



Brian Gregersen (28-01-2003)
Kommentar
Fra : Brian Gregersen


Dato : 28-01-03 23:22

> Jeg har været inde og kigge på Brians side og den brager ned for et godt ord

Det er muligt min side brager ned hvad det så end betyder, men som glad amatør
og eneste asp erfaring er Tutorials på html.dk ja så synes jeg da det går
nogenlunde. Der er ikke mange klager fra de 120-130 besøgende om dagen.
Min kalender og Links side fungerer efter hensigten

Tak for dine validerings råd jeg vil prøve mig frem senere. Jeg troede kun det
var nødvendigt at validere på formular niveau via javascript.

Jeg har i hvert fald lært at man ALDRIG skal linke til en aktuel side men kun
en test side...

Hilsen
Brian


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 14:30

F.Larsen skrev:

> Quoting af strenge betragter jeg ikke som input validering men
> datakonvertering nødvendig for at indsætte i databasen på lige
> fod med dato konvertering i forhold til brugerindtastninger
> som også skal overholde visse syntaksmæssige regler.

O.k. Men vi kan vel blive enige om at den er essentiel for at en
side med frit forminput kan fungere?


> Jeg har været inde og kigge på Brians side og den brager ned
> for et godt ord ....

Hvordan "brager den ned"?

Ideelt set bør en side naturligvis være sikret mod fejl, forstået
således at en bruger "højst" kan få en pæn fejlmeddelelse, skrevet
af sidens forfatter. Men hvis der kan opstå ubehandlede fejl vil
jeg skelne skarpt mellem fejl der "blot" giver en asp-fejl til
browseren, og fejl der enten ændrer i bagvedliggende data eller
også viser data der ikke skulle være vist (fx brugeroplysninger på
en fremmed bruger).

> Mangel på InputValidering er en ofte forekommen "forglemmelse"
> hos udviklere ..

Uden tvivl.


> hvilket som "sideeffekt" kan afstedkomme en hel del
> sikkerhedsmæssige problemer

Det afhænger af karakteren af de data der håndteres. En søgeside
der fejler på grund af et manglende eller ugyldigt søgeudtryk er
ikke et sikkerhedsproblem - det er "blot" et stabilitetsproblem.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

F.Larsen (22-01-2003)
Kommentar
Fra : F.Larsen


Dato : 22-01-03 15:15

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns930B938434B6Djcdmfdk@gyrosmod.dtext.news.tele.dk...
> F.Larsen skrev:
> > Jeg har været inde og kigge på Brians side og den brager ned
> > for et godt ord ....
>
> Hvordan "brager den ned"?

f.eks. submit uden at indtaste noget. Fejlene ser alle SQL fejl, og så er
det jo nemt for en hacker at regne resten ud.
men hvad med at prøve selv (se linken i Brians indlæg)

> Det afhænger af karakteren af de data der håndteres. En søgeside
> der fejler på grund af et manglende eller ugyldigt søgeudtryk er
> ikke et sikkerhedsproblem - det er "blot" et stabilitetsproblem.

Ja, der er sikker mange undtagelser, men jeg vil igen henvise til:
http://online.securityfocus.com/infocus/1603

Da Brians kode som sagt ikke indeholder "nogen" form for inputvalidering.

PS: Det er fuldt muligt at kompromitere et system selv om der anvendes
dobbelt quotes i parsing til SQL databasen (en udbredt misforståelse blandt
udviklere) det bliver bare en smule mere advanceret :=)

--
Flemming
http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/




Ukendt (22-01-2003)
Kommentar
Fra : Ukendt


Dato : 22-01-03 22:18


> "F.Larsen" skrev:
> PS: Det er fuldt muligt at kompromitere et system selv om der anvendes
> dobbelt quotes i parsing til SQL databasen (en udbredt misforståelse
blandt
> udviklere) det bliver bare en smule mere advanceret :=)
>

Hej Flemming

Kan du ikke være venlig at uddybe ovenstående lidt mere.
Jeg har selvfølelig læst problemerne med quots i SQL, men hvis du er vidne
om flere problemer,
må du meget gerne dele ud af din viden.

Jeg har netop læst den artikel du henviser til og den var særdeles
spændene/skræmmende.
Link: http://online.securityfocus.com/infocus/1603

MVH
Jesper







F.Larsen (23-01-2003)
Kommentar
Fra : F.Larsen


Dato : 23-01-03 00:00

<JK> wrote in message news:3e2f09f1$0$209$edfadb0f@dread16.news.tele.dk...

> Jeg har netop læst den artikel du henviser til og den var særdeles
> spændene/skræmmende.
> Link: http://online.securityfocus.com/infocus/1603

et dilemma for mig - for hvis en af jer bagefter farer ud og afprøver den
nye viden på et web site så kan jeg jo risikere at komme på forsiden af
computerworld som "bagmanden bag xxx hackeren", se f.eks.:
http://www.computerworld.dk/default.asp?Mode=2&ArticleID=16698

Disclaimer: ved at klikke på nedenstående link fratager jeg Flemming for
ethvert ansvar for den viden som jeg herved kan indhente :)
http://home.cbkn.dk/security/

Det ville være en god ide hvis man havde nogle af disse sikkerheds
problematikker i baghovedet næste gang man skulle skrue et system sammen.
Hvis du bliver lidt bleg om næbbet når du læser dokumenterne - så er det
fordi du har forstået hvad det går ud på :=)

--
Flemming
http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/



Jesper Kennet (24-01-2003)
Kommentar
Fra : Jesper Kennet


Dato : 24-01-03 10:14

Hej Flemming.

Tak for dit svar og henvisning til de ekstra artikler.

Jeg forstår godt dit dilemma, for der findes jo desværre folk med ondsindede
hensigter her på nettet.

MVH
Jesper Kennet

>
> et dilemma for mig - for hvis en af jer bagefter farer ud og afprøver den
> nye viden på et web site så kan jeg jo risikere at komme på forsiden af
> computerworld som "bagmanden bag xxx hackeren", se f.eks.:
> http://www.computerworld.dk/default.asp?Mode=2&ArticleID=16698
>
> Disclaimer: ved at klikke på nedenstående link fratager jeg Flemming for
> ethvert ansvar for den viden som jeg herved kan indhente :)
> http://home.cbkn.dk/security/
>
> Det ville være en god ide hvis man havde nogle af disse sikkerheds
> problematikker i baghovedet næste gang man skulle skrue et system sammen.
> Hvis du bliver lidt bleg om næbbet når du læser dokumenterne - så er det
> fordi du har forstået hvad det går ud på :=)
>



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste