• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mysqli_real_escape_string im Array richtig platzieren

StephanBo

Mitglied
Gute Morgen,

versuche gerade Sicherheitslücken in einem Array zu schließen und möchte vor der DB-Speicherung die eingegeben Daten per mysqli_real_escape_string sicher machen. Jetzt bin ich mir bei einer Array-Funktion jedoch nicht sicher, ob dies an der richtigen Stelle von mir eingebracht wurde (im zweiten Block in der if-Bedingung im Code) oder ob ich dies nicht schon vorher im ersten Block bei parse_str hätte machen sollen. Zwei Fragen nun: 1. Was wär hier die optimale Lösung? 2. Und reicht der
mysqli_real_escape_string hier aus oder sollte man noch htmlspecialchars bzw. htmlentities mit einbrigen um SQL-Injections zu vermeiden?

PHP:
<?php

if (isset($_REQUEST['action'])) {
    if ($_REQUEST['action'] == "contact_form_request") {


        $ourMail = "[email protected]";


        $required_fields = array("Name", "Email", "Nachricht");
        $pre_messagebody_info = "";
        $errors = array();
        $data = array();
        parse_str($_REQUEST['values'], $data);


        //check for required and assemble message

        if (!empty($data)) {
            foreach ($data as $key => $value) {
                $name = mysqli_real_escape_string(trim($key));
                if (in_array($name, $required_fields)) {
                    if (empty($value)) {
                        $errors[$name] = "Bitte " . $name . " eingeben";
                    }
                }
        } //...
?>
 
Zuletzt bearbeitet von einem Moderator:
htmlentities und htmlspecialchars machen was ganz anderes und hat mit Schutz vor SQL-Injection gar nüscht zu tun. In Deinem Falle würde da sicher das Arbeiten mit prepared statements weiterhelfen, dann ist das escapen der Strings mit eingebaut.
 
Ok, danke. Hast mich auf die richtige Fährte gebracht. Habe es zwar noch nicht hinbekommen, aber steht auf meiner To-Do-Liste zum Lernen.
 
Zurück
Oben