(User-) Eingaben vor Übernahme in DB maskieren - Wie macht es Sinn?
markus
- php
1 Tom
hallo,
wie maskiert ihr Eingaben, die von einem Formular in eine DB geschrieben werden sollen?
Angenommen, ihr habt ein Textfeld für ein Gästebuch.
Theoretisch kann ja der Besucher da jeden Code reinpacken...
(SQL-Injection läßt grüßen)
PHP stellt eine Reihe von Funktionen bereit, die solche Eingaben "säubern" sollen. Welche davon nutzt ihr?
Ich habe mir folgende Funktion gebaut,
die ich für jede (User-)Eingabe anwende, bevor ich Sie in die DB schreibe:
function maskInput($input) {
$input = htmlentities(trim($input));
$input = mysql_real_escape_string($input);
return $input;
}
Fehlt da noch was?
addslashes() wird ja sozusagen von mysql_real_escape_string() erschlagen, oder?
Vielen Dank für eure Unterstützung,
Grüße,
Markus
Hello,
Ich habe mir folgende Funktion gebaut,
die ich für jede (User-)Eingabe anwende, bevor ich Sie in die DB schreibe:function maskInput($input) {
$input = htmlentities(trim($input));
$input = mysql_real_escape_string($input);return $input;
}
Fehlt da noch was?
addslashes() wird ja sozusagen von mysql_real_escape_string() erschlagen, oder?
Da wird wohl was zuviel sein.
In der Datenhaltung sollten immer neutrale Daten gespeichert werden, wenn es nicht einen besonderen Grund dagegen gibt. htmlentities() ist aber ein Ausgabeformat für ein bestimmtes Gerät (Browser).
Vergessen hast Du, Dein PHP danach zu fragen, ob es schon selbsttätig Maskierungen hinzugefügt hat. Die solltest Du dann nämlich erst wieder entfernen oder eben die Funktionalität abschalten
siehe hierzu get_magic_quotes_gpc() http://de3.php.net/manual/en/function.get-magic-quotes-gpc.php
Du kannst im prinzip auch das gesamte GET- oder POST-Array wieder rekursiv mit stripslashes() behandeln, wenn die MQ_gpc eingeschaltet waren.
Und dann reicht das mysql_real_escape_string() für die Maskierung der Daten aus.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom