[SQL] PHP auf MySQL Injection Prüfen?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von June, 15. Mai 2013 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Mai 2013
    PHP auf MySQL Injection Prüfen?

    Hallo zusammen,

    ich habe eine Website mittels PHP und MySQL Datenbank programmiert welche hauptsächlich verschachtelte Menüs darstellt

    Hauptseite:
    index.php

    Hauptseite / Untermenü:
    index.php?n1=1

    Hauptseite / Untermenü/ Untermenü:
    index.php?n1=1&n2=1

    Hauptseite / Untermenü/ Untermenü/ Untermenü:
    index.php?n1=1&n2=1&n3=1

    n1,n2,n3
    geben jeweils den inhalt aus ner funktion heraus


    Jetzt wollte ich mal wissen wie sicher das ganze ist und mal mit Havij / Advanced SQL Injection Tool meinen String gescannt "http://localhost/page/index.php?n1=1"

    Innerhalb von 3 unglaublichen Sekunden listet der mir folgendes
    - Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
    - MySQL >=5
    - Datenbankname
    - Tabellennamen
    - Rows
    - Row Inhalte

    Ja sogar Usernamen und Passwörter - zwar verschlüsselt, aber das is ja an der stelle wiederrum egal da ich ja sowieso schon am ***** bin.

    Wichtig für mich ist jetzt nur :
    - Wie und was habe ich falsch gemacht.
    - Was kann ich dagegen tun?

    Ich habe meine Seite ebenfalls auf nen Linux Apache hochgeladen und konnte sogar dort alles auslesen.

    Experten vor
     
  2. 15. Mai 2013
    AW: Injection MySQL

    naja gibt verschiedene Möglichkeiten bin auch niemand der 100% damit vertraut ist, aber 1.real_escape_string()

    2.
    eine Select From auf alle Datensätze (vll irgendwie einschränken jenachdem was alles in der Tabelle steht und wie du die abfrage minimieren kannst) und dann überprüfen passt dein $_POST auf eine der zurückgegeben reihen, sprich überhaupt keine fremdeinwirkung in den Select erlauben. Kann aber performancetechnisch zu problemen führen, gerade ohne Caching.
     
  3. 15. Mai 2013
    Zuletzt bearbeitet: 15. Mai 2013
    AW: Injection MySQL

    Die "GET/POST" Variablen filtern.

    Code:
    function getValue($var)
    {
     $val = preg_replace('[^0-9]{3}', '', intval($_GET[$var]));
     return $val;
    }
    
    Wenn du damit die GET Variablen ausliest, wird dir ein "Integer" mit einer max. Länge von 3 zurückgegeben.
    Alles andere wird entfernt.
     
  4. 15. Mai 2013
    AW: Injection MySQL

    ich werds gleich mal austesten, feedback kommt gleich
     
  5. 15. Mai 2013
    AW: Injection MySQL

    Poste deinen Code, dann kann man dir auch helfen.
     
  6. 15. Mai 2013
    AW: Injection MySQL

    um den code mal eben aus zu schnippseln ists etwas zu viel
    1200 zeilen funktionen alles verschachtelt etc.

    Mit preg_replace gings auch net, muss wohl wo anders ne sicherheitslücke sein.

    Ich werde mich heute oder morgen mal mit meinem nerdigen bruder zusammen setzen und den code mal unter die lupe nehmen.

    vielleicht kann ich ja dann ein "so sollte es nicht sein" beispiel an euch weitergeben.
     
  7. 15. Mai 2013
    AW: Injection MySQL

    Wenn du den nicht posten willst gibts hier auch nichts mehr zu diskutieren, es sei denn du stellst eine Glaskugel bereit.
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.