Benutzereingaben filtern/absichern

Hallo,

wie kann ich am besten Benutzereingaben filtern, bevor ich sie weiterverarbeite (also ausgeben oder an MySQL weiterleiten), damit dort kein „Unfug“ also HTML oder JavaScript oder SQL getrieben wird (Stichwort XSS etc.)?

Vielen Dank schonmal!

Hallo,
gegen XSS hilft z.b. htmlentities($_POST[‚usereingabe‘])
gegen Mysql injektion addslashes($_POST[‚usereingabe‘])

Muss man halt anpassen je nach dem wie du die daten weiterverwenden willst.

Gruß
XzenTorXz

Hallo XzenTorXz

gegen XSS hilft z.b. htmlentities($_POST[‚usereingabe‘])
gegen Mysql injektion addslashes($_POST[‚usereingabe‘])

Kann man das auch einfach kombinieren, also z.B.
addslashes(htmlentities($_POST[‚usereingabe‘]))
???

Viele Grüsse,
Thorsten

Hallo XzenTorXz

gegen XSS hilft z.b. htmlentities($_POST[‚usereingabe‘])
gegen Mysql injektion addslashes($_POST[‚usereingabe‘])

Kann man das auch einfach kombinieren, also z.B.
addslashes(htmlentities($_POST[‚usereingabe‘]))
???

Ja natürlich kann man das kombinieren.

Gruß

Hallo XzenTorXz

gegen XSS hilft z.b. htmlentities($_POST[‚usereingabe‘])
gegen Mysql injektion addslashes($_POST[‚usereingabe‘])

Kann man das auch einfach kombinieren, also z.B.
addslashes(htmlentities($_POST[‚usereingabe‘]))

rein syntaktisch geht das natuerlich - nur wird es i. allg. ueberhaupt gar keinen sinn machen.
a) sind meist sowieso die magic_quoates angeschalten - dann ist addslashes fuer umsonst
b) brauchst du fuer eine ausgabe sehr wahrscheinlich keine escapten quotes…

um es sauber in die db zu bekommen nimmt man etwas wie mysql_escape_string

a) sind meist sowieso die magic_quoates angeschalten - dann
ist addslashes fuer umsonst

Was meinst du damit genau?

b) brauchst du fuer eine ausgabe sehr wahrscheinlich keine
escapten quotes…

um es sauber in die db zu bekommen nimmt man etwas wie
mysql_escape_string

Und wenn ich es dann wieder aus der DB herauslese und ausgebe habe ich doch dann trotzdem die von dir unter b) abgelehnten „escapten quotes“, oder?

Viele Grüsse,
Thorsten

Bei deinem Wissen ist es vielleicht gefährlich auf eigene Eingabefilter zu setzen. Du kannst deshalb die
Eingaben durch Suhosin filtern lassen, falls das auf deinem Server schon installiert ist (is wahrscheinlich)

a) sind meist sowieso die magic_quoates angeschalten - dann
ist addslashes fuer umsonst

Was meinst du damit genau?

das besagte option automatisch ein addslashes macht
http://de.php.net/manual/de/security.magicquotes.php
und 2x addslashes ist nicht unbedingt richtig.

aber wie ich gerade gesehen habe ist e mittlerweile schon wieder deprecated…

b) brauchst du fuer eine ausgabe sehr wahrscheinlich keine
escapten quotes…

um es sauber in die db zu bekommen nimmt man etwas wie
mysql_escape_string

Und wenn ich es dann wieder aus der DB herauslese und ausgebe
habe ich doch dann trotzdem die von dir unter b) abgelehnten
„escapten quotes“, oder?

abgelehnt habe ich gar nix.

wenn aber jemand:

the „magick“ quotes im form eingibt, sehen sie mit addslashes als
the „magick“ quotes bei dir an. die eingabe will man aber so niemals anzeigen.
wenn du natuerlich ein sql zusammenbaust, brauchst du die slashes.