Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verständnisfrage zu Injections

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Colophoniaz
    hat ein Thema erstellt [Erledigt] Verständnisfrage zu Injections.

    [Erledigt] Verständnisfrage zu Injections

    das nette PHP Manual sagt mir das mysql_real_escape_string vor einem Query ausgeführt werden soll. Heisst das für mich nun das ich vor jede Eingabe z.b. <input> Feldern escapen muss oder reicht es wenn ich das wie folgt angebe?

    PHP-Code:
    public function setEntry($date,$visitor,$message){
            
    $this->datum $date;
            
    $this->besucher $visitor;
            
    $this->nachricht $message;
            
    $db = new mysqli('localhost','root','','drk');
            
    $sql='INSERT INTO gb(datum,besucher,nachricht)VALUES("'.$this->datum.'","'.$this->besucher.'","'.$this->nachricht.'")';
            
    $result $db->query(mysql_real_escape_string($sql)); // HIer würde ich erst escapen
            
    if(!$result){
                die(
    $db->error);
            }
            
                
    //echo $result;
                
    $db->close();
            
        } 

  • nikosch
    antwortet
    wer soll da schon was böses reinhauen.
    Ein Hochkomma reicht u.U. schon. Das hat nicht zwingend etwas mit Angriffen zu tun.

    Einen Kommentar schreiben:


  • Colophoniaz
    antwortet
    Danke für den Artikel, werd ihn mir mit ner Tasse Kaffee mal zu gemüte ziehen.
    Bisher hab ich solches abfangen immer ignoriert da ich nur lokal arbeite/übe und wer soll da schon was böses reinhauen.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Absolut, genauso meinte ich das!

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Das bezog sich auf die allgemeine Übergabe.
    Ich kenne Deine Scripte zwar nicht, aber POST und GET Werte werden zumindest in meinen Scripten immer zur weiteren Verarbeitung verwendet.
    Ja. Aber abhängig davon, ob ich sie:
    - ausgebe
    - in eine Session speichere
    - in eine DB speichere
    - bspw. mit if mit einem statischen Wert vergleiche
    wird jeweils ein anderes Escaping, vielleicht auch nur eine allgemeine Validierung und ein früher Abbruch nötig.
    Daher werden die auch immer escaped! Auf welchen Datentyp kommt dann drauf an, welchen ich erwarte.
    (erwarteter) INT der in Querys ohne Hochkommata notiert wird, kann mit real_escape nicht sinnvoll escaped werden. Hier ist explizites Casten nach INT o.ä. notwendig.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Das bezog sich auf die allgemeine Übergabe.
    Ich kenne Deine Scripte zwar nicht, aber POST und GET Werte werden zumindest in meinen Scripten immer zur weiteren Verarbeitung verwendet.
    Daher werden die auch immer escaped! Auf welchen Datentyp kommt dann drauf an, welchen ich erwarte.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    $db->query(mysql_real_escape_string($sql));
    Das ist kompletter Blödsinn und unwirksam. Die Beispiele im Manual sind auch eindeutig.
    Ich würde immer erst escapen, bevor ich etwas aus POST oder GET übernehme!
    Worauf bezieht sich das? Pauschal zu escapen ist ja auch nicht sinnvoll. Weder aus Sicht der Weiterverarbeitung, noch der Sicht der verwendeten Datentypen.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Ich würde immer erst escapen, bevor ich etwas aus POST oder GET übernehme!

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Lies am besten diesen Artikel mal komplett durch, danach solltest du Bescheid wissen:

    Kontextwechsel erkennen und behandeln

    Einen Kommentar schreiben:

Lädt...
X