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

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
søgning i MySQL og addslashes
Fra : Bo Rattenborg


Dato : 20-12-02 18:02

I forbindelse med en søgefunktion, er jeg blevet rådet til at anvende
addslashes() på min søgestreng.

Hvad gør den ? - og er der andre ting jeg bør gøre ? og påvirker det min
søgning ?

Mvh
Bo



 
 
Christian Joergensen (23-12-2002)
Kommentar
Fra : Christian Joergensen


Dato : 23-12-02 16:24

On Fri, 20 Dec 2002 18:02:25 +0100, Bo Rattenborg wrote:

> I forbindelse med en søgefunktion, er jeg blevet rådet til at anvende
> addslashes() på min søgestreng.

Lad os antage at PHP modtage følgende streng fra en formular:

   "I'm to sexy for my shirt"

Det er ret klart at hvis du direkte sætter den ind i en database, eller
gør noget andet vil du få en fejl:

   INSERT INTO foo (bar) VALUES ('I'm to sexy for my shirt')

Derfor har PHP en vane med at prefixe visse karakterer med \ for at escape
dem. Din streng ser derfor sådan ud:

   "I\'m to sexy for my shirt"

På denne måde kan du snildt bruge den i MySQL:

   INSERT INTO foo (bar) VALUES ('I\'m to sexy for my shirt')

Dog skal man så være opmærksom på at når man hiver tingene ud af databasen
igen skal man fjerne backslashen (da det jo ikke er videre kønt når man
skal læse det). Dette gøres, som du nok har gættet, med strip_tags:

   print strip_tags("I\'m to sexy for my shirt");
   -> I'm to sexy for my shirt

Jeg håber det hjalp.

--
Christian Jørgensen | If you need a screwdriver,
http://www.razor.dk | use the general purpose hammer.


Mads Lie Jensen (23-12-2002)
Kommentar
Fra : Mads Lie Jensen


Dato : 23-12-02 18:11

On Mon, 23 Dec 2002 16:23:58 +0100, "Christian Joergensen"
<mail@phpguru.dk> wrote:

>Derfor har PHP en vane med at prefixe visse karakterer med \ for at escape
>dem. Din streng ser derfor sådan ud:
>
>   "I\'m to sexy for my shirt"
>
>På denne måde kan du snildt bruge den i MySQL:
>
>   INSERT INTO foo (bar) VALUES ('I\'m to sexy for my shirt')
>
>Dog skal man så være opmærksom på at når man hiver tingene ud af databasen
>igen skal man fjerne backslashen (da det jo ikke er videre kønt når man
>skal læse det). Dette gøres, som du nok har gættet, med strip_tags:

I ovenstående INSERT bliver back-slashen slet ikke indsat i databasen.
Den fortæller så at sige bare at den ' som følger lige efter \ skal
opfattes som en del af strengen og ikke som om at strengen ender.

Derfor skal (behøver) man ikke at køre en stripslashes() når man igen
henter teksten ud fra databasen.

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Lær af andres fejl
- du lever alligevel ikke længe nok til selv at prøve dem alle.

Bo Rattenborg (27-12-2002)
Kommentar
Fra : Bo Rattenborg


Dato : 27-12-02 15:10

Ok.
Jeg fik rådet da jeg spurgte om sikkerhed vedr. søgning i en database, men
det ser ikke ud til at have nogen speciel betydning vedr. sikkerhed. Jeg har
tænkt mig at slette ordene 'delete', 'drop' fra søgestrengen for at undgå
'misbrug' af søgningen. Er der andre muligheder eller ting jeg bør gøre ?

Mvh
Bo



Niels Andersen (27-12-2002)
Kommentar
Fra : Niels Andersen


Dato : 27-12-02 15:16

Bo Rattenborg wrote in <3e0c5f3a$0$2552$ba624c82@nntp04.dk.telia.net>:
>> "I'm to sexy for my shirt"
>> INSERT INTO foo (bar) VALUES ('I'm to sexy for my shirt')
> Jeg fik rådet da jeg spurgte om sikkerhed vedr. søgning i en database, men
> det ser ikke ud til at have nogen speciel betydning vedr. sikkerhed.


Søgestreng: '); DELETE FROM table ;
=>
INSERT INTO foo (bar) VALUES (''); DELETE FROM table ; ')

Giver to fejl, og sletter al data i den valgte tabel.
Man kan altså indsætte lige præcis de SQL-kommandoer man har lyst til.

Så jo, det har også noget med sikkerhed at gøre, selv hvis vi ikke tæller
"drift-sikkerhed" med. :)

--
Mvh.

Niels Andersen
(la nels. anersyn.)

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