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