Absicherung vor xss und sqlinjections

Heyho

sagtmal, ich bin seit einiger zeit am probieren selbst auf meiner seite sql code bzw. hier und da xss einzubauen! bisd ato ist es mir selbst nicht gelungen.

zum filtern von strings nutz ich ein einfaches

PHP:
htmlspecialchars($string , ENT_QUOTES);

und für die integers (ids etc)

PHP:
intval($id);

aber reicht das eigentlich aus?
oder gibts da trotzdem noch mittel und wege was an den beiden sachen vorbei zu schieben?
 
php.net/addslashes (weiss jetzt nicht ob sich das mit einer schon genannten Funktion beisst bzw. nicht das irgw. doppelt escaped wird)

htmlentities($string, ENT_QUOTES, 'UTF-8') - Bevorzuge ich immer, da es alle (öäü etc.) HTML-Spezifischen und nicht doppelten Zeichen umsetzt.

Mhh... sonst muss ich passen.
 
Hallo,
wenn du htmlspecialchars konsequent umsetzt, bist du vor XSS sicher.
Das Problem ist nur das konsequente Umsetzen ;)

Ansonsten haben die beiden Sachen eher weniger mit SQL Injection zu tun, wobei es schon ratsam ist, wenn man eine Zahl erwartet man auch nur zahlen zulässt
 
konsequent wird das durchgezogen ;)
sämmtliche ids/nummern kommen ja nur via intval rein!

aber wichtiger als das xss ist mir halt noch die tauglichkeit, text der via

PHP:
$SQL = "update table set var=\"" . $string . "\" where id = 1";

eingefügt wird, abzusichern!
 
Hallo,
@lookshe: Dazu muss man aber vorher überprüfen, ob magic_quotes_gpc auf on oder off steht.
Wenn es auf on steht, muss man zuerst auf $_POST, $_GET etc. überall stripslashes anwenden, sonst wird es doppelt maskiert (wenn man mysql_real_escape_string ) verwendet.

@easteregg: Bevor du überall mysql_real_escape_string einbaust, erst gründlich über magic_quotes_gpc informieren und welche Komplikationen dadurch entstehen
 
Zurück
Oben