Datenbankeinführung

  • [FONT="Franklin Gothic Medium"][COLOR="Indigo"][SIZE="3"]Hai <3

    Ich habe gelesen dass durch SQL Einführung in meinem Code Sachen kaputt gehen können. Ich habe gelesen man muss dass mit mysql_real_escape_string machen. Was real damit zu tun hat verstehe ich zwar nicht, aber egal.
    Ich habe also jetzt diesen code:

    $var = mysql_real_escape_string($_GET["eindeutigebenutzeridentifikationsnummer"]);
    $query = 'SELECT * FROM benutzertabelle WHERE idvombenutzerdergesuchtwird = '.$var;
    mysql_query($query);

    Aber man kann immernoch eine SQL Einführung machen! was mache ich falsch??
    :(

    Hilde[/SIZE][/COLOR][/FONT]

    Ich bin 1337 :]
    (Immer 2 mal mehr als du)

  • Erstens heißt das nicht SQL Einführung sondern SQL Injection.

    Desweiteren kann dir so glaub ich niemand helfen. Weil welche Art von Injection funktioniert den?
    Und kannst du vll mal ein bissle mehr Code Posten?

    Lieben Gruß
    Ulle

  • Es kann kein SQL Code mehr Injected werden, nach deinem Code.
    mysql_real_escape_string sorgt dafür das die SQL befehlsrelevanten Zeichen mit einem '\' versehen werden, sozusagen escaped werden.

    Was verstehst du denn unter einer SQL Einführung?

  • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="2"]Hildegard, ich glaub du könntest mal ernst bleiben.
    Wenn du auch nurn Funken Ahnung hast, sollteste doch wisse, dass mysql_real_escape... escaped und somit schonmal keine SQl Injection möglich ist, solange die Daten nicht noch irgendwo wieder vom escaping befreit werden.
    Was real damit zu tun hat, hab ich auch keine Ahnung, wobei das real nicht fürs Kaufhaus steht, also hab ich doch etwas Ahnung, ist aber auch egal

    Bleib einfach mal ernst, so blöde Posts brauch keiner[/SIZE][/COLOR][/FONT]

  • Also ich vermute das ist einfach nur wieder nen sinnloser Thread wo sich einer gedacht hat er tut mal so als hätt er keinen Plan und postet mal Dreck.

    Vote4Close

  • [FONT="Franklin Gothic Medium"][COLOR="Indigo"][SIZE="3"]Dass ich hier gerne spamme okay.. Aber die Antworten in diesem Thread sind schon episch, hat jemand von euch einen Funken Intellekt?
    Scheinbar nicht...
    Man braucht bei einer SQL Injection *spast* nur ' im zu injizierenden Querystring, wenn man damit die ursprüngliche Query aufbrechen muss.
    Nachdem die ursprüngliche Query in diesem Fall ihre Werte aber nicht in einfachen Anführungszeichen eingeschlossen hat braucht man nichts aufzubrechen...
    Testet dass doch lokal einmal, und nehmt als Eingabewert 2 OR 1=1
    => Alle werden aufgelistet, und kein Anführungszeichen dass von mysql_real_escape_string getötet werden könnte..

    $var = '2 OR 1=1';
    => SELECT * FROM benutzertabelle WHERE idvombenutzerdergesuchtwird = 2 OR 1=1

    Idioten, dass sogar die Mods hier keinen Funken Ahnung haben aber mich runtermachen?! Und warum postet ihr hier wenn ihr nicht den Hauch einer Ahnung habt? Geht in euere Ecke und erstellt peinliche p-server ihr primaten... Typisch mcore!

    ps: tut mir leid, ich habe das tourette syndrom //EDIT: auf Drängen von Well habe ich doch kein Tourette Syndrom.
    [/SIZE][/COLOR][/FONT]

    Ich bin 1337 :]
    (Immer 2 mal mehr als du)

  • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="2"]Ich verstehem deine Ausführung nich ganz zu 100%
    Und Ahnung muss man ja nich von allem haben ;)
    Jedenfalls, wenn du '2 OR 1=1' als GET übergeben würdest, müsste es normal escaped werden.
    Anders siehts ohne ' ' aus
    Allerdings sollte man in so nem Fall auch dran denken, sein Query so zu gestalten, dass es sowas nich geben kann.

    Ausserdem, ich sagte nur, dass du nich immer dumme posts machen sollst, dein letzter Post hier war mal sinnvoller und ohne unnötige Ironie.[/SIZE][/COLOR][/FONT]

  • [FONT="Franklin Gothic Medium"][COLOR="Indigo"][SIZE="3"]Du übergibst den Spass ohne Anführungszeichen: 2 OR 1=1
    Dann wird auch nichts escaped. Man muss nicht von allem Ahnung haben, aber wenn man eine Antwort auf etwas postet sollte man wissen was man da schreibt...
    [/SIZE][/COLOR][/FONT]

    Ich bin 1337 :]
    (Immer 2 mal mehr als du)

  • Hallo Hildegard96,

    du solltest kürzere - und vor allem englische - Variablenbezeichner wählen. Anstelle von eindeutigebenutzeridentifikationsnummer könntest du bspw. "UID" wählen.

    Ich empfehle zudem CamelCase: eindeutigeBenutzerIdentifikationsNummer
    Dadurch werden deine Variablenbezeichner lesbarer.

    Mit freundlichen Grüßen.

  • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="2"]Dazu sagte ich ja, dass man eben drauf achten sollte, sein Query abzusichern auch für diesen Fall
    Wie das auch immer gehn sollte, ist ja jedem selber überlassen, es dürfte schon helfen, alles in `` einzuschließen.
    Und ich sagte auch, dass der Spaß nur ohne ' ' richtig funktioniert.
    BTW, wenn du MySQLi und Prepared Statements verwendest, gibts schonmal etwas weniger Probleme, aber 100% sicher ists auch nich.[/SIZE][/COLOR][/FONT]

  • Ich kann die Aussage von internetfreak nur unterschreiben, ich bin eh' der Meinung man sollte bei größeren Projekten mit einer DB Klasse arbeiten, welche Schlüsselwörter unterbindet.

    Nun aber habe ich auch Kritik, liebe Hildegard.
    Aus welchem Grund sollte jemand seine UserID via POST bzw. GET übergeben, höchstens den USERNAMEN welcher im Endeffekt wieder im Varchar ist und du für eine Injection mehr oder weniger ein Anführungszeichen brauchst.

  • Gegenfrage: Wieso sollte man die Benutzer (U)ID nicht zur Authentifizierung nutzen?

  • Also ganz ehrlich der einzigste der hier keine Ahnung hat bist wohl du, ich weiß mit 100%iger Sicherheit das sich hier keiner vor die Beweißen muss. Und wenn du deine Antworten auf deine Fragen schon kennst, und meinst hier Leute testen zumüssen. Dann geh damit in andere Foren und beleidige hier nicht Leute die weit aus mehr aufm kasten haben als du je haben wirst.

    Desweiteren wird kein halbwegs gescheiter Programmierer solch einen String an den Query übergeben. Das ist ersten total sinnlos und zweitens einfach nur hohl.

    Aber wenn du so codest dann freut es mich für dich das du dein Ding durchziehst. Ich wünsche dir viel Erfolg bei deinen weiteren sinnlosen Threads und ich hoffe das keiner mehr so Blöd ist dir zu antworten.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!