Avatar billede aerobee Nybegynder
06. september 2005 - 13:48 Der er 14 kommentarer og
1 løsning

Syntax og replace

Hejsa..

VIl lige høre om der er nogle der kan sige mig hvilke tegn jeg burde replace i et textarea som kan enten have sikkerhedsnæssige problemer med min MySQL database eller som er syntax som ikke kan benyttes.

F.eks replacer jeg i øjeblikket ' med ´ da ' jo vil give en syntax fejl..

Kort fortalt:
Mangler en liste over hvilke tegn der burde replaces inden data sættes in i databasen.

Aerobee
Avatar billede arne_v Ekspert
06. september 2005 - 13:53 #1
hvis du bruger parameters / prepared statement så behøver du ikke bekymre dig
om ' etc.

men hvis den tekst skal vises på en web side vil du muligvis teste for HTML
tags
Avatar billede aerobee Nybegynder
06. september 2005 - 14:01 #2
Okay parameters / prepared statement  har jeg ikke hørt om før?
Hvordan bruger jeg den?
Avatar billede arne_v Ekspert
06. september 2005 - 14:04 #3
hvilket sprog bruger du til applikationen ?
Avatar billede aerobee Nybegynder
06. september 2005 - 14:05 #4
ASP 3.0 og VBScript
Avatar billede arne_v Ekspert
06. september 2005 - 14:09 #5
ADO.NET (som man bruger i ASP) har parameters

jeg har vist kun et Access eksempel på lager men det bør virke lige så fint
med MySQL:

<%
' open
adParamInput = 1
adInteger = 3
adVarChar = 200
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb;;"
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
' traditionel
con.Execute "INSERT INTO t1 VALUES(7,'O''Toole')"
' med parameters
cmd.CommandText = "INSERT INTO t1 VALUES(@f1,@f2)"
cmd.Parameters.Append(cmd.CreateParameter("@f1", adInteger, adParamInput))
cmd.Parameters.Append(cmd.CreateParameter("@f2", adVarChar, adParamInput, 50))
cmd.Parameters("@f1") = 8
cmd.Parameters("@f2") = "O'Malley"
cmd.Execute
' close
Set cmd = Nothing
Set con = Nothing
%>
Avatar billede aerobee Nybegynder
06. september 2005 - 14:20 #6
da jeg allerede har åbnet for adgang til min db behøver jeg ikke at gøre det igen - så jeg kan vel bare pille det ud af ovenstående script korrekt?

Ydermere forstår jeg hellere ikke brugen af insert into, der er jo 2?

Hvor i alverden skal jeeg indsætte min inserto into statement?
Ja undskyld, ved godt det er kun burde handle om MySQL men du ser nu til at have check på det arne_v

Håber du kan hjælpe :-)
Avatar billede arne_v Ekspert
06. september 2005 - 14:36 #7
det er demo kode som viser 2 forskellige måder at lave INSERT på:

1) traditionel hvor man fordobler '
2) med parameters
Avatar billede arne_v Ekspert
06. september 2005 - 14:37 #8
hvordan ser din INSERT ud nu ?
Avatar billede aerobee Nybegynder
06. september 2005 - 14:43 #9
men er adInteger, adParamInput og adVarChar, adParamInput, 50)) noget "indbygget" i ADODB.Command?Forstår den ikke da jeg ikke kan se hvordan tegn bliver replacet
Avatar billede aerobee Nybegynder
06. september 2005 - 14:50 #10
Her er den insert det handler om:

sql = "INSERT INTO Members (MemberID,brugernavn,nickname,kodeord,alder,navn,email,beskrivelse,LastSeenDate,LastSeenTime,Aktiveret,AktiveringsKode)"
                        sql = sql & " VALUES ("&""&newID&",'"&brugernavn&"','"&nickname&"','"&kodeord&"',"&alder&",'"&navn&"','"&email&"','"&beskrivelse&"','"&CDATE(Date())&"','"&FormatDateTime(Now(), vbShortTime)&"',0,'"&newPass&"')"
                        conn.execute(sql)
Avatar billede arne_v Ekspert
06. september 2005 - 17:20 #11
så erstatter du alle de mange variabel navne med placeholdere og tilføjer
parametre for hver af dem
Avatar billede aerobee Nybegynder
07. september 2005 - 08:32 #12
Okay, det lyder fornuftigt.
Men tænkte, har du ikke en liste med samtlige tegn der burde replaces?
Det er nu rart at vide...
Avatar billede arne_v Ekspert
07. september 2005 - 08:34 #13
umiddelbart vil jeg tror at kun ' og " er SQL farlige

mens HTML tags muligvis kan være applikations farlige

men den slags er der større guruer end mig til
Avatar billede aerobee Nybegynder
07. september 2005 - 08:38 #14
okay, men takker for hjælpen arne_v :-)

Smid et svar
Avatar billede arne_v Ekspert
07. september 2005 - 08:39 #15
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester