markus: (User-) Eingaben vor Übernahme in DB maskieren - Wie macht es Sinn?

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau