|
| 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 |
| | |
Ukendt (14-03-2007)
| Kommentar Fra : Ukendt |
Dato : 14-03-07 21:14 |
| | |
|
|