/ 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
PHP escaper ' i post parametre?
Fra : Thomas Schulz


Dato : 01-06-02 09:46

Jeg har et login på min (localhost)side som snart skal uploades.
Efter at have læst en artikel omkring db/sql/login sikkerhed
(http://activedeveloper.dk/aspdigital/2002053001.asp) checkede om jeg havde
samme fejl.


På en måde havde jeg, men det har bare ikke de samme konsekvenser med PHP..
Her er noget sjovt.

if (isset($HTTP_POST_VARS['login_name'])) {
$login_name = trim($HTTP_POST_VARS['login_name']);
echo $login_name;
}

* 'login_name' er udfyldt som: 1' or '1' = '1
* Echo giver: 1\' or \'1\' = \'1



Kunne lade til PHP beskytter en mod den slags fejl (muligvis fordi det POST
via en "submit" knap)... Eller..?
Anyway, jeg synes bare lige jeg ville poste det.. Virkede lidt sjovt :). Jeg
vil lede senere efter en forklaring.


mvh
Thomas



 
 
Jonas Koch Bentzen (01-06-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 01-06-02 09:56

Thomas Schulz skrev:

> Jeg har et login på min (localhost)side som snart skal uploades.
> Efter at have læst en artikel omkring db/sql/login sikkerhed
> (http://activedeveloper.dk/aspdigital/2002053001.asp) checkede om jeg
> havde samme fejl.
>
>
> På en måde havde jeg, men det har bare ikke de samme konsekvenser med
> PHP.. Her er noget sjovt.
>
> if (isset($HTTP_POST_VARS['login_name'])) {
> $login_name = trim($HTTP_POST_VARS['login_name']);
> echo $login_name;
> }
>
> * 'login_name' er udfyldt som: 1' or '1' = '1
> * Echo giver: 1\' or \'1\' = \'1
>
>
>
> Kunne lade til PHP beskytter en mod den slags fejl

Kun, hvis magic_quotes er slået til. Søg på magic_quotes på
http://dk.php.net/, så får du en forklaring.

magic_quotes er smart nok, hvis man skal indsætte noget i en database.
Problemet er bare, at man jo med PHP laver meget andet end at indsætte
data i en database. Derfor er magic_quotes utroligt irriterende, og jeg
håber, at alle systemadministratorer slår det fra. Til gengæld håber
jeg også, at systemadministratorerne lærer deres brugere, at de så
manuelt skal escape data, der skal ned i databasen. Det gøres på
følgende måde:

Hvis man bruger PEAR DB (http://pear.php.net/manual/en/core.db.php):

$db->query("INSERT INTO tabel VALUES ( ".$db->quote($_POST["navn"])."
)");

Hvis man bruger PostgreSQL-funktionerne:

pg_query("INSERT INTO tabel VALUES (
'".pg_escape_string($_POST["navn"])."' )");

Hvis man bruger MySQL-funktionerne:

mysql_query("INSERT INTO tabel VALUES (
'".mysql_escape_string($_POST["navn"])."' );

>(muligvis fordi det
> POST via en "submit" knap)... Eller..?
> Anyway, jeg synes bare lige jeg ville poste det.. Virkede lidt sjovt
> :). Jeg vil lede senere efter en forklaring.
>
>
> mvh
> Thomas

--
Jonas Koch Bentzen

Thomas Schulz (01-06-2002)
Kommentar
Fra : Thomas Schulz


Dato : 01-06-02 17:20

> magic_quotes er smart nok, hvis man skal indsætte noget i en database.

Tak. Det er lidt frustrerende at set_ini ikke lader til at virke med
magic_quotes_gpc (har testet) på _min_ php 4.20 .
Hvis det bliver nødvendigt kan jeg sikkert bruge .htaccess.

Mange tak for hjælpen.

mvh
Thomas



Jonas Koch Bentzen (01-06-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 01-06-02 17:46

Thomas Schulz skrev:

>> magic_quotes er smart nok, hvis man skal indsætte noget i en
>> database.
>
> Tak. Det er lidt frustrerende at set_ini ikke lader til at virke med
> magic_quotes_gpc (har testet) på _min_ php 4.20 .

Det kan af tekniske grunde ikke lade sig gøre. Du kan se en oversigt
over, hvilke parametre, der kan ændres vha. ini_set(), .htaccess mv.,
http://dk.php.net/ini_set.

--
Jonas Koch Bentzen

Thomas Schulz (01-06-2002)
Kommentar
Fra : Thomas Schulz


Dato : 01-06-02 22:37

> > Tak. Det er lidt frustrerende at set_ini ikke lader til at virke med
> > magic_quotes_gpc (har testet) på _min_ php 4.20 .
>
> Det kan af tekniske grunde ikke lade sig gøre. Du kan se en oversigt
> over, hvilke parametre, der kan ændres vha. ini_set(), .htaccess mv.,
> på

Men det sjove er, at "magic_quotes_gpc" står listet (jeg kom til at skrive
"set_ini" i stedet for "ini_set()", men det var det, jeg mente) der..
set_magic_quotes_runtime"
virker heller ikke.




Thomas



Jonas Koch Bentzen (01-06-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 01-06-02 23:11

Thomas Schulz skrev:

>> > Tak. Det er lidt frustrerende at set_ini ikke lader til at virke
>> > med magic_quotes_gpc (har testet) på _min_ php 4.20 .
>>
>> Det kan af tekniske grunde ikke lade sig gøre. Du kan se en oversigt
>> over, hvilke parametre, der kan ændres vha. ini_set(), .htaccess mv.,
>> på
>
> Men det sjove er, at "magic_quotes_gpc" står listet

Søreme ja. Det undrer mig, for på et tidspunkt rapportede jeg det som en
bug, at det ikke var muligt at ændre magic_quotes_gpc vha. ini_set() -
og så fik jeg svaret fra en PHP-udviklerne, at det af tekniske grunde,
som jeg ikke kan huske, ikke kan lade sig gøre at slå magic_quotes_gpc
fra direkte i et script.

> der.. set_magic_quotes_runtime"

magic_quotes_runtime er forskellig fra magic_quotes_gpc. Se
http://www.php.net/manual/en/configuration.php.

--
Jonas Koch Bentzen

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

Månedens bedste
Årets bedste
Sidste års bedste