/ 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
Opdater database melder fejl
Fra : Mads Brinch


Dato : 07-04-10 12:52

hej ng jeg er i gang med at lave en database, men hver gang man
opdatere den melder den fejlen.

Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/karakterbogen/site/karakter/opdater.asp, line 60

strSQL = strSQL & " Where Id = " & Request.Form("t0")"
------------------------------------------------------^

mit opdaterings felt ser sådan haer ud

<%
' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../../db/karakter.mdb")
Conn.Open DSN

' SQL sætning opbygges
strSQL = "Update personer set "
strSQL = strSQL & "Bruger= '" & Request.Form("t1") & "', "
strSQL = strSQL & "Rollenavn= '" & Request.Form("t2") & "', "
strSQL = strSQL & "Race= '" & Request.Form("t3") & "', "
strSQL = strSQL & "Xp= '" & Request.Form("x1") & "', "
strSQL = strSQL & "Xp1= '" & Request.Form("x2") & "', "
strSQL = strSQL & "Egenskab1= '" & Request.Form("e1") & "', "
strSQL = strSQL & "Egenskab2= '" & Request.Form("e2") & "', "
strSQL = strSQL & "Egenskab3= '" & Request.Form("e3") & "', "
strSQL = strSQL & "Egenskab4= '" & Request.Form("e4") & "', "
strSQL = strSQL & "Egenskab5= '" & Request.Form("e5") & "', "
strSQL = strSQL & "Egenskab6= '" & Request.Form("e6") & "', "
strSQL = strSQL & "Egenskab7= '" & Request.Form("e7") & "', "
strSQL = strSQL & "Egenskab8= '" & Request.Form("e8") & "', "
strSQL = strSQL & "Egenskab9= '" & Request.Form("e9") & "', "
strSQL = strSQL & "Egenskab0= '" & Request.Form("e0") & "', "
strSQL = strSQL & "Hp= '" & Request.Form("t4") & "', "
strSQL = strSQL & "Np= '" & Request.Form("t5") & "', "
strSQL = strSQL & "Mp= '" & Request.Form("t6") & "', "
strSQL = strSQL & "LA1= '" & Request.Form("l1") & "', "
strSQL = strSQL & "LA2= '" & Request.Form("l2") & "', "
strSQL = strSQL & "LA3= '" & Request.Form("l3") & "', "
strSQL = strSQL & "LA4= '" & Request.Form("l4") & "', "
strSQL = strSQL & "LA5= '" & Request.Form("l5") & "', "
strSQL = strSQL & "LA6= '" & Request.Form("l6") & "', "
strSQL = strSQL & "LA7= '" & Request.Form("l7") & "', "
strSQL = strSQL & "LA8= '" & Request.Form("l8") & "', "
strSQL = strSQL & "LA9= '" & Request.Form("l9") & "', "
strSQL = strSQL & "LA0= '" & Request.Form("l0") & "', "
strSQL = strSQL & "GM1= '" & Request.Form("g1") & "', "
strSQL = strSQL & "GM2= '" & Request.Form("g2") & "', "
strSQL = strSQL & "GM3= '" & Request.Form("g3") & "', "
strSQL = strSQL & "GM4= '" & Request.Form("g4") & "', "
strSQL = strSQL & "GM5= '" & Request.Form("g5") & "', "
strSQL = strSQL & "GM6= '" & Request.Form("g6") & "', "
strSQL = strSQL & "GM7= '" & Request.Form("g7") & "', "
strSQL = strSQL & "GM8= '" & Request.Form("g8") & "', "
strSQL = strSQL & "GM9= '" & Request.Form("g9") & "', "
strSQL = strSQL & "GM0= '" & Request.Form("g0") & "' "
strSQL = strSQL & " Where Id = " & Request.Form("t0")"

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

hvad er det der går galt?

her er siden den skal hente data fra

<div align="center">
<form action="opdater.asp" method="post" name="frmOne">
<fieldset>
<legend>Karakterark info</legend>
<div align="left">
<input type="hidden" name="t0"
value='<%=request.querystring("Id")%>'>
<input type="hidden" name="t1"
value='<%=request.querystring("name")%>'>
<input type="hidden" name="t2" value='<%=rs("Rollenavn")%>'>
<input type="hidden" name="t3" value='<%=rs("Race")%>'>
<input type="hidden" name="x2" value='<%=rs("Xp1")%>'>

<label>XP Tilbage:</label> <input type="text" readonly="readonly"
name="x1" id="XP" value='<%=rs("Xp")%>'><br/><br/>


<label>Egenskaber:</label>
<label></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n
bsp;&nbsp; <label>Lært af:</label> <br/>
<input type="text" readonly="readonly" name="e1"
value='<%=rs("Egenskab1")%>'>&nbsp;
<select id="ANumber" onChange="showtext1(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l1" value='<%=rs("LA1")%>'><br/>

<input type="text" readonly="readonly" name="e2"
value='<%=rs("Egenskab2")%>'>&nbsp;
<select id="BNumber" onChange="showtext2(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l2" value='<%=rs("LA2")%>'><br/>

<input type="text" readonly="readonly" name="e3"
value='<%=rs("Egenskab3")%>'>&nbsp;
<select id="CNumber" onChange="showtext3(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l3" value='<%=rs("LA3")%>'><br/>

<input type="text" readonly="readonly" name="e4"
value='<%=rs("Egenskab4")%>'>&nbsp;
<select id="DNumber" onChange="showtext4(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l4" value='<%=rs("LA4")%>'><br/>

<input type="text" readonly="readonly" name="e5"
value='<%=rs("Egenskab5")%>'>&nbsp;
<select id="ENumber" onChange="showtext5(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l5" value='<%=rs("LA5")%>'><br/>

<input type="text" readonly="readonly" name="e6"
value='<%=rs("Egenskab6")%>'>&nbsp;
<select id="FNumber" onChange="showtext6(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l6" value='<%=rs("LA6")%>'><br/>

<input type="text" readonly="readonly" name="e7"
value='<%=rs("Egenskab7")%>'>&nbsp;
<select id="GNumber" onChange="showtext7(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l7" value='<%=rs("LA7")%>'><br/>

<input type="text" readonly="readonly" name="e8"
value='<%=rs("Egenskab8")%>'>&nbsp;
<select id="HNumber" onChange="showtext8(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l8" value='<%=rs("LA8")%>'><br/>

<input type="text" readonly="readonly" name="e9"
value='<%=rs("Egenskab9")%>'>&nbsp;
<select id="INumber" onChange="showtext9(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l9" value='<%=rs("LA9")%>'><br/>

<input type="text" readonly="readonly" name="e0"
value='<%=rs("Egenskab0")%>'>&nbsp;
<select id="JNumber" onChange="showtext10(this);"><!--#include
file="../../db/option.inc"--></select>
&nbsp;<input type="text" name="l0"
value='<%=rs("LA0")%>'><br/><br/>

<label>Hp:</label> <input type="text" readonly="readonly"
name="t4" value='<%=rs("Hp")%>'><br/>
<label>Np:</label> <input type="text" readonly="readonly"
name="t5" value='<%=rs("Np")%>'><br/>
<label>Mp:</label> <input type="text" readonly="readonly"
name="t6" value='<%=rs("Mp")%>'><br/>


<br /><p align="center">Egenskabs Beskrivelse</p>
<div align="center">
<textarea name="info" cols="60" rows="5" readonly="readonly"
id="info"></textarea>
</div>

<br/><br/>
<div align="center">
<input type="reset" class="button" value="Slet ændringer">
<input type="button" class="button" value="udregn xp" onClick =
calculate()>
<input type="submit" class="button" value="Gem">
</div></div>
</fieldset>
</form>
</div>   

håber i kan hjælpe.



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

 
 
Rune Jensen (07-04-2010)
Kommentar
Fra : Rune Jensen


Dato : 07-04-10 13:41

Den 07-04-2010 13:51, Mads Brinch skrev:
> strSQL = strSQL& " Where Id = "& Request.Form("t0")"

Du kan teste det ved at du som tommelfinderregel skal have 1 & for hver 2 "

Man kan "snyde" og escape, men jeg synes, det er grimt.

Sandsynligvis, og alt efter hvad du vil, kan du så gøre følgende:

strSQL = strSQL & "Where Id = '" & Request.Form("t0") & "'"

Men her vil "Where Id = " angive en streng, som så sættes ammen med
resultatet af formfeltet t0, sådan:

Where id = '[t0]'

Det er ikke sikkert, det er det, du vil, så det må du uddybe.

Jeg er ikke så meget inde i DNer, men for sikkerhedens skyld kan det
betale sig at bruge parameterized queries. Jeg ville også så vidt muligt
validere input fra formfeltet, inden det bruges.

Andre kan nok give bedre råd herom end mig.


MVH
Rune Jensen

Mads Brinch (07-04-2010)
Kommentar
Fra : Mads Brinch


Dato : 07-04-10 14:49

så har jeg sat den her ind i stedet for den gamle

strSQL = strSQL & "Where Id = '" & Request.Form("t0") & "'"

men så kommer der en ny fejl

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
expression.

/karakterbogen/site/karakter/opdater.asp, line 63


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

Rune Jensen (07-04-2010)
Kommentar
Fra : Rune Jensen


Dato : 07-04-10 17:38

Den 07-04-2010 15:49, Mads Brinch skrev:
> så har jeg sat den her ind i stedet for den gamle
>
> strSQL = strSQL& "Where Id = '"& Request.Form("t0")& "'"
>
> men så kommer der en ny fejl
>
> Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
>
> [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
> expression.
>
> /karakterbogen/site/karakter/opdater.asp, line 63

Prøv at udskrive din streng i stedet for at udføre den.

response.write strSQL

Hvad giver den?


MVH
Rune Jensen

Mads Brinch (07-04-2010)
Kommentar
Fra : Mads Brinch


Dato : 07-04-10 18:12

så virkede det takker for hjælpen

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

Ukendt (07-04-2010)
Kommentar
Fra : Ukendt


Dato : 07-04-10 21:57


"Mads Brinch" <de_fire@hotmail.com> skrev i en meddelelse
news:4bbcbcc5$0$278$14726298@news.sunsite.dk...
> så virkede det takker for hjælpen.

Det er god skik, at komme med løsningen på problemet...
Så andre også kan få glæde af anstrengelserne...
Bjarne



Stig Johansen (07-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 07-04-10 22:51

"bsn" <bsnSNABELAoncableDOTdk> wrote:

> Det er god skik, at komme med løsningen på problemet...
> Så andre også kan få glæde af anstrengelserne...

Enig.
Men i det her tilfælde var det ret åbenlyst, at der ikke skal '-er om id, da
det sikkert et et talfelt.

--
Med venlig hilsen
Stig Johansen

Ukendt (07-04-2010)
Kommentar
Fra : Ukendt


Dato : 07-04-10 23:40


"Stig Johansen" <wopr.dk@gmail.com> skrev i en meddelelse
news:4bbcfec0$0$275$14726298@news.sunsite.dk...
> "bsn" <bsnSNABELAoncableDOTdk> wrote:
>
>> Det er god skik, at komme med løsningen på problemet...
>> Så andre også kan få glæde af anstrengelserne...
>
> Enig.
> Men i det her tilfælde var det ret åbenlyst, at der ikke skal '-er om id,
> da
> det sikkert et et talfelt

Ja, det havde jeg også luret...
Men der kan være andre...
Bjarne



Rune Jensen (08-04-2010)
Kommentar
Fra : Rune Jensen


Dato : 08-04-10 00:22

Den 08-04-2010 00:40, bsn skrev:
> "Stig Johansen"<wopr.dk@gmail.com> skrev i en meddelelse
> news:4bbcfec0$0$275$14726298@news.sunsite.dk...
>> "bsn"<bsnSNABELAoncableDOTdk> wrote:
>>
>>> Det er god skik, at komme med løsningen på problemet...
>>> Så andre også kan få glæde af anstrengelserne...
>>
>> Enig.
>> Men i det her tilfælde var det ret åbenlyst, at der ikke skal '-er om id,
>> da
>> det sikkert et et talfelt
>
> Ja, det havde jeg også luret...
> Men der kan være andre...

Nåhjag, nu kom i jo med svaret ;)

Men om ikke andet, så hjælper det den, som skal hjælpe. Her tænker jeg
på, at det måske ikke er den løsning man foreslår, som er den endelige
løsning.

Hvis i forstår.

Iøvrigt, så har jeg mistanke om, i dette tilfælde, at den string
concatenation, som spørgeren foretager er ret uoptimal. Det er noget
med, at lægger man strengen sammen med sig selv, så falder hastigheden
eksponentielt for hver gang.

Jeg ville foreslå i stedet for dette:

strSQL=string
strSQL=strSQL & string1
strSQL=strSQL & string2
strSQL=strSQL & string3

....hele vejen ned, at man i stedet bruger en adskiller.

Det kan gøres sådan:

strSQL = string & _
   string1 & _
   string2 & _
   string3...


MVH
Rune Jensen

Stig Johansen (08-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 08-04-10 04:34

Rune Jensen wrote:

> Iøvrigt, så har jeg mistanke om, i dette tilfælde, at den string
> concatenation, som spørgeren foretager er ret uoptimal.

Det ret uoptimalt, da ASP reallokerer memory hver gang i stedet for at
'appende'.

Derudover er det hullet som en si overfor SQL injection.

--
Med venlig hilsen
Stig Johansen

Rune Jensen (08-04-2010)
Kommentar
Fra : Rune Jensen


Dato : 08-04-10 22:33

Den 08-04-2010 05:34, Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Iøvrigt, så har jeg mistanke om, i dette tilfælde, at den string
>> concatenation, som spørgeren foretager er ret uoptimal.
>
> Det ret uoptimalt, da ASP reallokerer memory hver gang i stedet for at
> 'appende'.
>
> Derudover er det hullet som en si overfor SQL injection.

Ja, det er lidt ærgerligt, at Mads ikke havde lige lidt mere tålmodighed
til at få det sidste med, for jeg tror det ville være et godt eksempel
at lære (mere) ud fra.


MVH
Rune Jensen

--
Webdesign gruppemøde. Vil du med?
http://www.webdesigngruppen.dk/

Mads Brinch (11-04-2010)
Kommentar
Fra : Mads Brinch


Dato : 11-04-10 12:47

> Ja, det er lidt ærgerligt, at Mads ikke havde lige lidt mere
> tålmodighed
> til at få det sidste med, for jeg tror det ville være et godt eksempel
> at lære (mere) ud fra.

ja har ikke lige været inde at kigge et par dage, men dens tore løsning lå
i bunden af det hele.

så det kom til at se sådan her ud.

strSQL = strSQL & "Where Id = " & Request.Form("t0")

i stedet for.

strSQL = strSQL & " Where Id = " & Request.Form("t0")"

som jeg startede med... og så virkede det. en anden fej var en post som jeg
ikke havde med så den prøvede at opdatere et felt der ikke var der.

men har læst det i har skrevet igennem og det giver lidt at tænke over, jeg
er stadig begynder med asp...;D


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

Stig Johansen (11-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 11-04-10 13:27

Mads Brinch wrote:

> strSQL = strSQL & "Where Id = " & Request.Form("t0")

Det vil virke, men *don't* ever do that.
Du eksponerer den mest brugte sårbarhed overfor SQL-injection, - "ever
seen", og hvis der er f.eks MS SQLServer bringer du alle i fare.

> men har læst det i har skrevet igennem og det giver lidt at tænke over,
> jeg er stadig begynder med asp...;D

Tænk gerne (meget) længe, for 'picking the wrong path' går ud over andre -
ikke kun dig selv.

--
Med venlig hilsen
Stig Johansen

Stig Johansen (11-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 11-04-10 14:20

Stig Johansen wrote:

> Mads Brinch wrote:
>
>> strSQL = strSQL & "Where Id = " & Request.Form("t0")
>
> Det vil virke, men *don't* ever do that.
> Du eksponerer den mest brugte sårbarhed overfor SQL-injection, - "ever
> seen", og hvis der er f.eks MS SQLServer bringer du alle i fare.
>
>> men har læst det i har skrevet igennem og det giver lidt at tænke over,
>> jeg er stadig begynder med asp...;D
>
> Tænk gerne (meget) længe, for 'picking the wrong path' går ud over andre -
> ikke kun dig selv.

Af hensyn til kommende Google're vil jeg gerne fremhæve som afslutning på
denne tråd:
"BRUG *ALDRIG* DENNE LØSNING, DA DEN IKKE DÚR!!"

Stærke ord - men det nytter ikke noget at der findes så meget skrammel på
'inderneddet'...., som folk tager for gode varer.

CU - sometime - somewhere...

--
Med venlig hilsen
Stig Johansen

Mads Brinch (11-04-2010)
Kommentar
Fra : Mads Brinch


Dato : 11-04-10 17:39


> > strSQL = strSQL & "Where Id = " & Request.Form("t0")
>
> Det vil virke, men *don't* ever do that.
> Du eksponerer den mest brugte sårbarhed overfor SQL-injection, - "ever
> seen", og hvis der er f.eks MS SQLServer bringer du alle i fare.

okey hvad ville du forslå man skal gøre, det er en access database jeg
bruge?


> Tænk gerne (meget) længe, for 'picking the wrong path' går ud over andre -
> ikke kun dig selv.

Igen hvad skal jeg ellers gøre har bygget det op efter den guide der ligger
her på html.dk og hvids den er så forkert skulle den måske opdateres.

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

Stig Johansen (11-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 11-04-10 18:01

Mads Brinch wrote:

> Igen hvad skal jeg ellers gøre har bygget det op efter den guide der
> ligger her på html.dk og hvids den er så forkert skulle den måske
> opdateres.

Nu er det _usenet_ du kommunikerer med, og ikke html.dk (kender ikke siden),
men hvis der ligger en guide, der foreslår den konstruktion du snakker om,
så er den _perfekt_ _forkert_!
(og burde forbydes ved lov).

Kig efter parameterized queries, og du vil være tryg - ever after..

--
Med venlig hilsen
Stig Johansen

Rune Jensen (12-04-2010)
Kommentar
Fra : Rune Jensen


Dato : 12-04-10 16:03

Den 11-04-2010 19:01, Stig Johansen skrev:
> Mads Brinch wrote:
>
>> Igen hvad skal jeg ellers gøre har bygget det op efter den guide der
>> ligger her på html.dk og hvids den er så forkert skulle den måske
>> opdateres.
>
> Nu er det _usenet_ du kommunikerer med, og ikke html.dk (kender ikke siden),

Jeg kan godt mindes den, og ikke med glæde.

html.dk - det er der, hvor de nyeste artikler er tilbage fra 2001. Deres
artikler er forhistoriske og var gangbare for 8-10 år siden.

html.dk lever af at give adgang til usenet, hvor folk uden tilknytnung
til html.dk hjælper gratis med opdateret info, og så kan html.dk-folkene
læne sig tilbage og tjene på at placere reklamer på deres egen side uden
at løfte en finger, og vi leverer indholdet. Som sagt, så er deres
artikler dybt forældede.

Brug dog Google Groups i stedet, til at få adgang til usenet, det kræver
kun en Google-konto, som er gratis. Her kan du også vælge din egen
signatur i dine indlæg i stedet for disse html.dk-reklame-link. Så kan
du reklamere for din egen side i signaturen med et link, som kan hjælpe
din placering på Google - er det ikke meget bedre? Hvorfor skal de tjene
på dig? Hver gang, du skriver et indlæg fra html.dk, så giver du dem
gratis reklame, i stedet for at tjene på det selv.

Ikke ment som at jeg er sur, men generel irritation over html.dk. Det er
*mange*, som tror fejlagtigt, at det er html.dk, de får hjælp af, når de
skriver et indlæg på usenet. Jeg har for eksempel *intet* med html.dk at
gøre - heldigvis.


MVH
Rune Jensen

Stig Johansen (13-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 13-04-10 10:52

Rune Jensen wrote:

> html.dk - det er der, hvor de nyeste artikler er tilbage fra 2001. Deres
> artikler er forhistoriske og var gangbare for 8-10 år siden.

Ikke forstået (..gangbare) - parameterized queries har squ da været 'god
latin' siden mindst '95.
(Før da rodede jeg med netværksdatabaser på lidt større jern).

Så du kan da ikke i ramme alvor påstå det var gangbart i 2001...!?

--
Med venlig hilsen
Stig Johansen

Rune Jensen (13-04-2010)
Kommentar
Fra : Rune Jensen


Dato : 13-04-10 15:21

Den 13-04-2010 11:52, Stig Johansen skrev:

> Ikke forstået (..gangbare) - parameterized queries har squ da været 'god
> latin' siden mindst '95.
> (Før da rodede jeg med netværksdatabaser på lidt større jern).
>
> Så du kan da ikke i ramme alvor påstå det var gangbart i 2001...!?

Klart nok ;)

Jeg mente nu også artiklerne som helhed er dybt forældede -

Du kan finde ganske velskrevne artikler på html.dk bl.a. om, hvordan du
browser-sniffer en Netscape 4-browser i forhold til en IE4..
Jeg kan ikke lade være at tænke på, hvor yderst relevant dette fif er i
2010, nu hvor vi nærmer os IE9, Netscape er død og dens position
overtaget af firefox, som er i en V3.6.3. Og der er såmænd ikke meget
forskel på mange andre af deres artikler.


MVH
Rune Jensen

Stig Johansen (14-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 14-04-10 11:16

Rune Jensen wrote:

> Jeg mente nu også artiklerne som helhed er dybt forældede -

Som sagt kender jeg ikke artiklerne, og forholder mig kun til dette eksempel
som Mads fremlagde.

Den måde at håndtere databaser på, er ikke dybt forældet, men skulle
_aldrig_ have eksisteret.

> Du kan finde ganske velskrevne artikler på html.dk bl.a. om, hvordan du
> browser-sniffer en Netscape 4-browser i forhold til en IE4..

Jeg har ikke behov for at finde disse artikller, for det er irrelevant i
forhold til sikkerhed.

> Jeg kan ikke lade være at tænke på, hvor yderst relevant dette fif er i
> 2010, nu hvor vi nærmer os IE9

Dream on

IE9 er kun et 'testdrive', og hverken alfa eller beta, og forventes at
udkomme engang næste år.
Men MS laver samme 'stunt' som med IE7(+), hvor man ikke tilbyder den på
eksisterende OS'er.

Windows XP er 'supporteret' til 2014, så 'nærmer sig' er nok omkring 2018+

--
Med venlig hilsen
Stig Johansen

Leif Neland (12-04-2010)
Kommentar
Fra : Leif Neland


Dato : 12-04-10 23:24

Den 11-04-2010 19:01, Stig Johansen skrev:
> Mads Brinch wrote:
>
>> Igen hvad skal jeg ellers gøre har bygget det op efter den guide der
>> ligger her på html.dk og hvids den er så forkert skulle den måske
>> opdateres.
>
> Nu er det _usenet_ du kommunikerer med, og ikke html.dk (kender ikke siden),
> men hvis der ligger en guide, der foreslår den konstruktion du snakker om,
> så er den _perfekt_ _forkert_!
> (og burde forbydes ved lov).
>
> Kig efter parameterized queries, og du vil være tryg - ever after..
>
Der er (heldigvis(?)) den begrænsning, at access, som html.dk kører med,
ikke supporterer flere sætninger i samme query, f.ex. adskilt af semikolon.

Så det er ikke muligt at lave f.ex. et delete eller drop efter
select-sætningen.

Det kunne ellers lære dem... <evil grin>

Leif





Stig Johansen (13-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 13-04-10 10:39

Leif Neland wrote:

> Den 11-04-2010 19:01, Stig Johansen skrev:
>> Kig efter parameterized queries, og du vil være tryg - ever after..
>>
> Der er (heldigvis(?)) den begrænsning, at access, som html.dk kører med,
> ikke supporterer flere sætninger i samme query, f.ex. adskilt af
> semikolon.

Jo, men nu var kodeeksemplet taget fra html.dk, og ikke begrænset til MS
Access - samme kode kan bruges på MS Access, MS SQLServer, mySQL, SAPDB,
Oracle, DB/2 m.fl., blot man ændrer connectionstring.

> Så det er ikke muligt at lave f.ex. et delete eller drop efter
> select-sætningen.
>
> Det kunne ellers lære dem... <evil grin>

Jeg ved godt at MS Access, og andre primitive databaser ikke understøtter
stacked queries, men... prøv at kigge på 'xp_..' procedures i MS SQLServer,
og det du tror er <evil grin> (delete/drop) vil være det rene vand i
forhold til hvad man kan gøre med serveren (og det bagvedliggende LAN).

I sagens natur vill jeg ikke komme med eksempler, men det har været et
nærmest uundværligt værktøj til at 'rydde op i filer' engang jeg havde
'ansvaret' for 200+ MS SQLServere i en periode.

(Jeg vil ikke uddybe nærmere, men hvis Rigsrevisionen vidste hvad man kunne,
tror jeg nok der var lagt brænde på bålet -- og kastet benzin henover -
samt en brændende tændstik

>
> Leif

--
Med venlig hilsen
Stig Johansen

Rune Jensen (12-04-2010)
Kommentar
Fra : Rune Jensen


Dato : 12-04-10 17:01

Den 11-04-2010 18:39, Mads Brinch skrev:
>>> strSQL = strSQL& "Where Id = "& Request.Form("t0")
>>
>> Det vil virke, men *don't* ever do that.
>> Du eksponerer den mest brugte sårbarhed overfor SQL-injection, - "ever
>> seen", og hvis der er f.eks MS SQLServer bringer du alle i fare.
>
> okey hvad ville du forslå man skal gøre, det er en access database jeg
> bruge?

Søg på parameterized queries, som Stig skriver. Det vil gøre din
database yderst robust imod hackerangreb.

Din opbygning af SQL'en iøvrigt kræver uforholdsmæssigt meget arbejde af
serveren, og det er ikke optimalt.

Strengsammenlægninger skal i ASP allerhelst gøres, så den samme streng
ikke lægges sammen med sig selv over flere arbejdsgange, hvis det kan
undgås.

Altså dette er *ikke* optimalt:

1)
a="noget tekst"
a = a & "noget mere tekst1"
a = a & "noget mere tekst2"
a = a & "noget mere tekst3"
a = a & "noget mere tekst4"


....mens dette er en *bedre* og mere *optimeret* metode:

2)
a = "noget tekst" & _
"noget mere tekst1" & _
"noget mere tekst2" & _
"noget mere tekst3" & _
"noget mere tekst4"



Forskellen ligger i, at i 1), der lægges den samme streng sammen med sig
selv flere gange. I eksempel 2), der opbygger man strengen direkte, ved
at man bruger et "fortsætter"-tegn (_ underscore), og det er udelukkende
for, at det er overskueligt, så det kan lægges over flere kodelinjer.
Reelt kan 2) nemlig også skrives som:

3) a = "noget tekst" & "noget mere tekst1" & "noget mere tekst2" &
"noget mere tekst3" & "noget mere tekst4"

Altså det hele på én linje. Det er bare mindre uoverskueligt end 2).

Men dette er kun generelt for streng-sammenlægninger, og det har ikke
som sådan specifikt med din database at gøre. Du bør helt klart sørge
for, først og fremmest at din side er sikret imod hackerangreb med
parameterized queries.

>> Tænk gerne (meget) længe, for 'picking the wrong path' går ud over andre -
>> ikke kun dig selv.
>
> Igen hvad skal jeg ellers gøre har bygget det op efter den guide der ligger
> her på html.dk og hvids den er så forkert skulle den måske opdateres.

Den er forkert, men vi har så heller intet intet med den at gøre.

Du skriver - som sagt - til en nyhedsgruppe, og det gør du via html.dk,
som vi ikke har tilknytning til på nogen måde. Der er mange andre måder
at få adgang til usenet, som er 100 gange bedre end html.dk. Google
Groups er bare én af dem.


MVH
Rune Jensen

Mads Brinch (13-04-2010)
Kommentar
Fra : Mads Brinch


Dato : 13-04-10 10:37


så har jeg kigget på det og har valgt din mulighed nummer 3

> 3) a = "noget tekst" & "noget mere tekst1" & "noget mere tekst2" &
> "noget mere tekst3" & "noget mere tekst4"

det virker ubeklageligt og er også nemt at have med at gøre;D...

er der nogle guides på usenet? og er det usenet.dk eller usenet.com?



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

Stig Johansen (13-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 13-04-10 10:46

Mads Brinch wrote:

> det virker ubeklageligt og er også nemt at have med at gøre;D...

Der er ikke nogen der har anfægtet, at det virker, på samme måde som hvis
jeg har problemer med min dørllås.

Fjerner jeg hele skidtet, håndtag samt lås, har jeg ingen problemer med at
komme ind og ud - MEN det har alle andre så heller ikke.

Da du bruger MS Access er risikoen for andre kommer til skade ikke stor, kun
dig selv og din side, men sørg i det mindste for du ikke har
fortrolige/følsomme data på din side.

--
Med venlig hilsen
Stig Johansen

Stig Johansen (08-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 08-04-10 17:35

"bsn" <bsnSNABELAoncableDOTdk> wrote:

>
> "Stig Johansen" <wopr.dk@gmail.com> skrev i en meddelelse
> news:4bbcfec0$0$275$14726298@news.sunsite.dk...
>> Enig.
>> Men i det her tilfælde var det ret åbenlyst, at der ikke skal '-er om id,
>> da
>> det sikkert et et talfelt
>
> Ja, det havde jeg også luret...
> Men der kan være andre...

Præcis - og mit svar var også kun for at beskrive en løsning, da OP ikke
melder tillbage om løsningen.

Intet er værre end at Google efter løsninger, og finde uafsluttede tråde.

--
Med venlig hilsen
Stig Johansen

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

Månedens bedste
Årets bedste
Sidste års bedste