/ 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
addslashes
Fra : Tom


Dato : 03-03-07 19:07

Jeg har læst i manualen, at man skal anvende mysqlrealescapestring i stedet
for addslashes da den finder mere.

Men i hvilke konkrete tilfælde escaper den hvad, som addslashes ikke gør?



 
 
Peter Brodersen (04-03-2007)
Kommentar
Fra : Peter Brodersen


Dato : 04-03-07 04:06

On Sat, 3 Mar 2007 19:06:54 +0100, "Tom" <no@spam.please> wrote:

>Jeg har læst i manualen, at man skal anvende mysqlrealescapestring i stedet
>for addslashes da den finder mere.
>
>Men i hvilke konkrete tilfælde escaper den hvad, som addslashes ikke gør?

mysql_real_escape_string() tager højde for det aktuelle charset,
hvilket kan være relevant ved multibyte-charsets, hvor en forkert
escape af en string netop vil muliggøre at man kan lave
SQL-injections.

Forestil dig en legitim strengkombination i et bizart
multibyte-charset, der indeholder et specialtegn, fx: Ã"
(denne kombination kan i øvrigt ikke forekomme i UTF-8)

Her ville det ikke være korrekt at erstatte Ã' med Ã\' idet Ã\ så
ville blive betragtet som ét tegn, og '-tegnet pludselig være en del
af SQL'en og ikke indholdet.

Wordpress led fx af et lignende sikkerhedshul for nyligt:
http://www.hardened-php.net/advisory_022007.141.html

--
- Peter Brodersen
Kendt fra Internet

Tom (04-03-2007)
Kommentar
Fra : Tom


Dato : 04-03-07 08:54

> Her ville det ikke være korrekt at erstatte Ã' med Ã\' idet Ã\ så
> ville blive betragtet som ét tegn, og '-tegnet pludselig være en del
> af SQL'en og ikke indholdet.
>
> Wordpress led fx af et lignende sikkerhedshul for nyligt:
> http://www.hardened-php.net/advisory_022007.141.html


Wow, tak for svaret, det var yderst hjælpende!



Peter Brodersen (14-03-2007)
Kommentar
Fra : Peter Brodersen


Dato : 14-03-07 11:36

On Sun, 4 Mar 2007 08:54:22 +0100, "Tom" <no@spam.please> wrote:

>Wow, tak for svaret, det var yderst hjælpende!

Jeg faldt i øvrigt over en gammel artikel, som også har et konkret
eksempel, hvor addslashes netop skubber et ' ud af en
multibyte-sekvens og skaber problemer:
http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string

--
- Peter Brodersen
Kendt fra Internet

Tom (14-03-2007)
Kommentar
Fra : Tom


Dato : 14-03-07 22:10


"Peter Brodersen" <usenet2007@ter.dk> wrote in message
news:et8j8d$9hm$1@news.klen.dk...
> On Sun, 4 Mar 2007 08:54:22 +0100, "Tom" <no@spam.please> wrote:
>
>>Wow, tak for svaret, det var yderst hjælpende!
>
> Jeg faldt i øvrigt over en gammel artikel, som også har et konkret
> eksempel, hvor addslashes netop skubber et ' ud af en
> multibyte-sekvens og skaber problemer:
> http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string


God artikel!

Tak for hjælpen med det. Jeg er nu helt overbevist



Allan Kok (05-03-2007)
Kommentar
Fra : Allan Kok


Dato : 05-03-07 21:56


"Peter Brodersen" <usenet2007@ter.dk> skrev i en meddelelse
news:esdd4h$hjo$1@news.klen.dk...
> On Sat, 3 Mar 2007 19:06:54 +0100, "Tom" <no@spam.please> wrote:
>
>>Jeg har læst i manualen, at man skal anvende mysqlrealescapestring i
>>stedet
>>for addslashes da den finder mere.
>>
>>Men i hvilke konkrete tilfælde escaper den hvad, som addslashes ikke gør?
>
> mysql_real_escape_string() tager højde for det aktuelle charset,
> hvilket kan være relevant ved multibyte-charsets, hvor en forkert
> escape af en string netop vil muliggøre at man kan lave
> SQL-injections.
>

Hvad går man så, hvis man bruger pear, og ikke ved hvilken db-server der er
i den anden ende?

Allan



Peter Brodersen (06-03-2007)
Kommentar
Fra : Peter Brodersen


Dato : 06-03-07 03:40

On Mon, 5 Mar 2007 21:55:53 +0100, "Allan Kok" <allan.kok@fabel.dk>
wrote:

>Hvad går man så, hvis man bruger pear, og ikke ved hvilken db-server der er
>i den anden ende?

Man bruger et passende database-API, fx PEAR DB, MDB2 eller ADOdb.

Derefter benytter man sig af placeholders i sine forespørgsler (fx
"SELECT id FROM table WHERE height = ? AND name = ?"). Så vil API'et
eller database-serveren selv sørge for at håndtere inputtet korrekt.
Det er langt mere rent end selv at skulle klippeklistreescape en
SQL-forespørgsel sammen.

... og så kan man også skifte database-server forholdsvist let. Selv om
man måske ikke lige har planer om at skifte fra fx MySQL til Oracle,
kan der stadigvæk være en fidus i at man let kan gå fra mysql- til
mysqli-bibliotekerne.

--
- Peter Brodersen
Kendt fra Internet

Ukendt (07-03-2007)
Kommentar
Fra : Ukendt


Dato : 07-03-07 09:26

Hey Peter ( eller andre )

De der placeholders gør de så at man kan udfylde felterne seperat vha.
en variabel eller et obj ?
Og har du et link til et eksempel med post af data ?

mvh
   Olrik Larsen
   omd[]tra-tanr[].dk
______________________
On Tue, 06 Mar 2007 03:39:34 +0100, Peter Brodersen
<usenet2007@ter.dk> wrote:

>On Mon, 5 Mar 2007 21:55:53 +0100, "Allan Kok" <allan.kok@fabel.dk>
>wrote:
>
>>Hvad går man så, hvis man bruger pear, og ikke ved hvilken db-server der er
>>i den anden ende?
>
>Man bruger et passende database-API, fx PEAR DB, MDB2 eller ADOdb.
>
>Derefter benytter man sig af placeholders i sine forespørgsler (fx
>"SELECT id FROM table WHERE height = ? AND name = ?"). Så vil API'et
>eller database-serveren selv sørge for at håndtere inputtet korrekt.
>Det er langt mere rent end selv at skulle klippeklistreescape en
>SQL-forespørgsel sammen.
>
>.. og så kan man også skifte database-server forholdsvist let. Selv om
>man måske ikke lige har planer om at skifte fra fx MySQL til Oracle,
>kan der stadigvæk være en fidus i at man let kan gå fra mysql- til
>mysqli-bibliotekerne.

JMo. (07-03-2007)
Kommentar
Fra : JMo.


Dato : 07-03-07 20:43

wrote:

> De der placeholders gør de så at man kan udfylde felterne seperat vha.
> en variabel eller et obj ?
> Og har du et link til et eksempel med post af data ?

Lidt komme-igang-guide:

http://www.razor.dk/php/guider/pear-db/


PEAR-dokumentationen:

http://pear.php.net/manual/en/package.database.db.intro-execute.php

Ukendt (14-03-2007)
Kommentar
Fra : Ukendt


Dato : 14-03-07 21:14

Ups glemte helt den her :O

Takker JMo !

mvh
   Olrik Larsen
   omd[]tra-tanr[].dk
______________________

On 07 Mar 2007 19:43:13 GMT, "JMo." <ns_sf012@mohr.cx.invalid> wrote:

> wrote:
>
>> De der placeholders gør de så at man kan udfylde felterne seperat vha.
>> en variabel eller et obj ?
>> Og har du et link til et eksempel med post af data ?
>
>Lidt komme-igang-guide:
>
>http://www.razor.dk/php/guider/pear-db/
>
>
>PEAR-dokumentationen:
>
>http://pear.php.net/manual/en/package.database.db.intro-execute.php

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408514
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste