SQL Injection: Suche Infos

te one schrieb:
Fast schade für alle angreifer, dass man das thema sql-injection so einfach umschiffen kann.
Frag dich folgendes: Wenn es so einfach ist, Injections zu umgehen, wieso werden dann laufend Webseiten, auch von verdammt großen Firmen wie Sony, regelmäßig über Injections angegriffen?
Nun, die Antwort ist entweder, dass es noch komplexere Injection-Methoden gibt oder, dass Firmen häufig zu geizig sind, diese recht einfachen Methoden wie real_escape_string oder Precompiled Statements zu verwenden.

Darlis schrieb:
Zahlen müssen sowieso auf Gültigkeit überprüft werden (wenn du ordentliche Software schreibst), dann muss die Eingabe sowieso zu einer gültigen Zahl konvertiert werden können. Z.B. Geburtsjahr -123: Das ist zwar eine gültige Zahl, aber kein gültiges Jahr.
Wozu unnötige Gültigkeitsprüfungen? Angenommen, du willst Artikel eines Shops oder News in einem Blog per ID aufrufen... kümmert es dich, wenn jemand nach id = "humppa" sucht? Es ist dir egal, genau so, wie wenn ein Crawler (oder User) den Fehler macht und die ID gar nicht angibt. Dein Query sucht nach ID-Gleichheit. Weder "Nichts" noch "humppa" werden eine Antwort erzeugen.
 
Daaron schrieb:
Nun, die Antwort ist entweder, dass es noch komplexere Injection-Methoden gibt oder, dass Firmen häufig zu geizig sind, diese recht einfachen Methoden wie real_escape_string oder Precompiled Statements zu verwenden.

Wozu unnötige Gültigkeitsprüfungen?

Die Antwort auf die obere Frage würde mich interessieren. Gibt es nun komplexere Möglichkeiten?? Denn ohne Hochkommata kommt man einfach nicht weit und ich denke nicht, dass die zu faul für eine Funktion zur Prüfung sind...

In deinen Beispielen womöglich durchaus unnöttig. Jedoch sollte die ID in manchen Bereichen schon passen (Login, Geldtransfer, ...)
 
Komplexer vielleicht nicht, aber SQL-Injection ist bei weitem nicht das einzige Thema. Jeder User-Input kann potentiell gefährlich werden wenn man nicht richtig damit umgeht (Cross-Site-Scripting, Buffer-Overflow, usw.)
 
te one schrieb:
Die Antwort auf die obere Frage würde mich interessieren. Gibt es nun komplexere Möglichkeiten?? Denn ohne Hochkommata kommt man einfach nicht weit und ich denke nicht, dass die zu faul für eine Funktion zur Prüfung sind...
Nix was ich kennen würde. Prepared Statements sollten eigentlich narrensicher sein, und auch real_escape... ist ziemlich sicher.

In deinen Beispielen womöglich durchaus unnöttig. Jedoch sollte die ID in manchen Bereichen schon passen (Login, Geldtransfer, ...)
Nä, der Username bei einem Login ist gar nicht so geheim. Bei Online-Banking ist es z.B. oftmals ne Kontonummer. OK, die trägt man jetzt nicht in die Welt hinaus, sie ist aber auch nicht geheim. Bei Foren etc. ist es derselbe Username, der auch dann für die Posts verwendet wird. Auch bei nem CMS ist der administrative Username oftmals irgendwo im öffentlichen Teil sichtbar. Bei anderen Sachen wie Shops ist es ne Mailadresse, auch nicht gerade hochgeheim. Die meisten User haben wohl nur eine oder 2, die wenigsten Leute sind so paranoid, für jeden Shop ne separate Adresse anzulegen. Ok, in dem Falle kann man aber sagen: Paranoid zu sein heißt nicht, dass nicht wirklich jemand hinter dir her ist.

Was an Logins wirklich kritisch ist, ist das Passwort bzw. die Art, wie damit umgegangen wird.
1.) keine Klartext-Passwörter in der Datenbank lagern, sondern MINDESTENS gesalzene MD5-Hashes. Dagegen hat z.B. der Shop von Mr. Spex verstoßen (zusammen mit SQL Injection Verwundbarkeit).
2.) Lass dich nicht mit ner Injection erwischen wie (where username=ABC and (password=xyz OR 1=1).... Nummer 1 schließt sowas aber schon fast aus.

Wie soll auch eine Gültigkeitsprüfung für Passwörter aussehen? Bei einem guten Passwort ist ALLES erlaubt. Im Idealfall nutzt man kein Passwort sondern eine Passphrase. Das Passwort "Swordfish 2001 Travolta" ist hinsichtlich Brute Force Algorithmen locker genau so sicher wie "50cv9zB.*c", aber im Gegensatz zum 2. wird man das erste nicht auf einen Zettel schreiben und an den Schreibtisch pinnen.
Eine Gültigkeitsprüfung macht nur beim Anlegen von Daten Sinn. Ist die Mailadresse eine Mailadresse? Ist das Passwort sicher genug? Beim Abruf isses Wurst.

Jesterfox schrieb:
Komplexer vielleicht nicht, aber SQL-Injection ist bei weitem nicht das einzige Thema. Jeder User-Input kann potentiell gefährlich werden wenn man nicht richtig damit umgeht (Cross-Site-Scripting, Buffer-Overflow, usw.)
Jo, aber leider Gottes sind es immer noch verdammt oft Injections, ohne komplexere Angriffsvektoren.
 
Zurück
Oben