Sicherheit bei Eintraegen in DB/addcslashes
Joachim
- php
0 Tom
Hi,
ich habe gelesen, dass addslashes moeglicherweise nicht ausreicht, um
Datenbank-Eingaben von Freitext zu validieren. Seit PHP 4.3 gibts ja addcslashes(), womit man ohne Aufwand alle moeglichen Zeichen escapen kann.
Haltet Ihr sowas nun fuer paranoid, oder ist es angemessen. Hab ich eventuell was uebersehen?
/*
33 0x21 !
34 0x22 "
35 0x23 #
36 0x24 $
37 0x25 %
38 0x26 &
39 0x27 '
40 0x28 (
41 0x29 )
42 0x2A *
45 0x2D -
46 0x2E .
47 0x2F /
59 0x3B ;
60 0x3C <
62 0x3E >
63 0x3F ?
64 0x40 @
92 0x5C \
*/
$not_valid = "\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2D\x2E\x2F\x3B\x3C\x3E\x3F\x40\x5C";
$str = ' " ; \ x\ x// "" ' # ? - ';
$str = addcslashes($str, $not_valid);
Gruesse Joachim
Hello,
das ist überhaupt nicht paranoid, sondern umsichtig. Mann sieht das Problem ja und hat einfache Möglichkeiten, etwas dagegen zu tun.
Vielleicht sollte man es auch nur als notwendige Nachfrickelamßnahme an einer krankhaften Programmiersprache (C) ansehen.
Wenn Du MySQL benutzt, dann gibt es mysql_escape_string() und mysql_real_escape_string(). Die tun alles Notwendige.
Aber vorher stripslashes() verwenden, wenn get_magic_quotes_gpc()
Wenn Du andere Datenbanken benutzt. musst Du dir die passende API-Funktion ggf. selber schreiben.
Grüße
Tom