Antworten

Thema: 2x mysql_query("INSERT INTO ..

Nachricht

Klicke hier, um dich anzumelden

 

Du kannst aus dieser Liste ein Symbol für deine Nachricht auswählen.

Zusätzliche Einstellungen

  • Wenn du diese Option aktivierst, werden URLs automatisch mit BB-Code ergänzt. www.beispiel.de wird zu [URL]http://www.beispiel.de[/URL].

Thema bewerten

Wenn du möchtest, kannst du dieses Thema bewerten.

Übersicht (Neuester Beitrag zuerst)

  • 08.02.2005
    Montoyafan
    Hi,

    das ist es auch nicht.

    Mit SQL-Injection kann ich bsw. mir in Deinem Forum mit etwas "Try and Error" mir einen Admin-Account erstellen und Dich rausschmeissen.

    Du musst dafür sorgen das in Post und Get Variablen nur das drin steht was auch drin stehen soll und kein gefährlicher SQL-Code.

    Zeichen wie >> ', " und \ << dürfen auf keinen Fall drin stehen.

    Solche Zeichen kannst Du wie folgt abfangen:

    PHP-Code:
    <?

    $variable 
    addslashes($_POST['Postvariable']);

    ?>
    Ein kleines Beispiel was zeigt wie SQL-Injection funktioniert:

    Du hast ein Loginscript für irgendeine Seite.

    Jetzt schickst Du die empfangenen Daten zur Prüfung an die DB um zu checken ob der User dort rein darf. Das sehe dann so aus:

    PHP-Code:
    ".... FROM user WHERE Username = '".$_POST['Username']."' && Passwort = '" $_POST['Passwort'] . "'"
    Wenn da jetzt ein User als Benutzername ' OR '1'='1 und als Passwort ' OR '1'='1 eingibt, ist er schon auf der Seite denn die Abfrage die in der DB abkommt sehe dann so aus:

    PHP-Code:
    ".... FROM user WHERE Username = '' OR '1'='1' && Passwort = '' OR '1'='1'"
    Nur ein Beipspiel.
    Man kann mit der Datenbank alles mögliche machen --> komplett löschen, sich einen Account anlegen ...

    Also ich denke das ist schon ein Grund sich wenigstens mal grundlegend über die eigene Script-Sicherheit gedanken zu machen

    Edit:
    Ein schlauer Mann hat mal gesagt:
    "All input is evil, until proven otherwise!"

    ^^ Merke ihn Dir und befolge Ihn

    Cu
  • 07.02.2005
    Wie meinst Du das mit dem Überprüfen? Wie kann ich das machen? @Montoyafan
    Schaue mal gleich nach was "SQL Injection" ist. Scheint ja nichts gutes zu sein.
    Web-Macher
  • 07.02.2005
    gateway
    Da hat Montoya natürlich wie immer Recht

    LG

    Gate
  • 07.02.2005
    Montoyafan
    Hi,

    schon mal etwas von "SQL Injection" gehört @Web-Macher?

    Wenn nicht, solltest Du Dich mal schleunigst darüber informieren

    GET und POST Übergaben niemals ungeprüft an die Datenbank senden!!

    Bei Deinen Querys kann man herrlich SQL-Befehle in die DB einschleusen

    Cu
  • 06.02.2005
    Danke!! Stimmt ist mir auch (zu) spät aufgefallen. Hab da jetzt 4 Stunden dran gesessen (!).

    Somit Problem schon gelösst. Danke nochmal!
  • 06.02.2005
    gateway
    Mach die Klammern die du aufmachst auch wieder zu dann klappts auch mit dem Nachbarn

    LG

    Gate
  • 06.02.2005
    Hallo habe folgendes Problem:
    if($_POST[todo] == "eintragen")

    { if($_POST[msg] && $_POST[betreff])

    { $now = time();

    mysql_query("INSERT INTO forum_threads (forum,aenderungs_datum,betreff,datum,user) VALUES

    ('$_REQUEST[forum_id]','$now','$_POST[betreff]','$now','1')");

    $get_id = mysql_insert_id();

    mysql_query("INSERT INTO forum_posts (bezug_thread,post_sort,datum,betreff,msg,user VALUES

    ('$get_id','0','$now','$_POST[betreff]','$_POST[msg]','1')");

    //$eintragok = 1;

    //header("Location:showthread.php?thread_id=$_REQUEST[forum_id]&eintragok=1");

    } else

    $notallfilled = 1; }
    Es ist ein Forum und ich möchte in zwei unterschiedliche Tabellen etwas eintragen.
    Der erste INSERT INTO befehl funktioniert auch, der nachfolgende Befehl $get_id = mysql_insert_id(); auch noch nur dannach der INSERT Befehl nicht mehr. MySQL gibt keine Fehlermeldung aus.

    Ich hoffe es kann mir jemand helfen.
    MfG
    Web-Macher

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Ja
  • Beiträge bearbeiten: Ja
  •