Main Links Oben mindestbreite Main Rechts Oben
mindestbreite

VoîÐ's Gästebuch

Das alte Gästebuch von "VoiD-World.de" (read-only)

Seite: «[2] [3] [4] [5] [6] » Einträge 31 bis 40 von 350 « Vorherige Seite | Nächste Seite »
Name Nachricht
tpfan erstellt am 28.08.2004 um 15:49 mail
tolle Seite !
(da ich selbst auch java programmiere)
*the Voice* erstellt am 24.08.2004 um 09:33
*hilfe*
wer rechnet denn auch mit der Wortzuteilung?!?
War doch nur Hilfsergänzungslöser *bg*

Mußte mir erst was ausdenken - hier also die neue(n) Frage(n):

Was ist neben der Anpflanzung von Strandhafer, eine der wirkungsvollsten
Methoden der Küstensicherung.
Wie wird die Methode im Fachjargon genannt, wie funktioniert sie und als
kleines Schmankerl:
In welcher Größenordnung/Menge wird die Methode im Jahr auf Sylt zur
Sicherung der Insel und zum Küstenschutz gewand?

conf.gif bye.gif smile.gif
VoiDy erstellt am 23.08.2004 um 15:45
hab ich vergessen zu sagen: *the Voice* ist am Zuge...
VoiDy erstellt am 23.08.2004 um 15:06
SQL Injection bedeutet soviel wie Einschleusen von neuen, ursprünglich nicht beabsichtigten SQL Befehlen, mit dem Ziel Informationen oder mehr (z.B. Adminrechte) über das Zielsystem zu erlangen.

Ich möchte das an einem kleinen Beispiel verdeutlichen. In dem Beispiel sind architektonische Mängel enthalten, aber es soll verdeutlichen wo das Problem ist.

Ich denke jeder kennt diese Seiten, wo man sich mit seinem Benutzernamen und seinem Passwort einloggen muss (eMail Accounts, eBay, diverse Foren usw.). Immer erscheint da ein Eingabefeld für den Benutzernamen und das Passwort. Und ein kleiner Login Button ist dort meistens auch.
Angenommen die Eingabe des Namens landet in der Variablen $username und das Passwort in $password. Im Hintergrund werden in der Regel SQL Statements ausgeführt, die in etwa so aussehen:
SELECT username WHERE username = '$username' AND password = 'password';

Das bedeutet soviel wie: selektiere mir alle Benutzer mit dem Namen $username und dem Passwort $password. Sind die Benutzernamen eindeutig (was bei solchen Systemen eigentlich immer der Fall sein muss), bekommt man genau eine Ergebniszeile von der Datenbank (DB) geliefert, sofern das Passwort mit dem Eintrag in der DB übereinstimmt (Anmerkung: hier habe ich mir eine architektonische Einfachheit erlaubt, in dem das Passwort unverschlüsselt in der DB abgelegt wird).

Wenn man sich die zugrundeliegende SQL Abfrage genauer ansieht, stellt man fest, dass $username und $password in Hochkomma angegeben werden müssen. Ausserdem muss die SQL Abfrage mit einem Semikolon abgesachlossen werden.

Wenn man jetzt bei der Eingabe des Benutzernamens z.B. ein '; (Hochkomma + Semikolon) angibt, würde das System die folgende Abfrage zusammensetzen:
SELECT username WHERE username = '';' AND password = 'password';

Wir hätten eine vollständige Abfrage (SELECT username WHERE username = ''; ) und eine unvollständige (fehlerhafte) Abfrage ( AND password = 'password'; ).

Dieses Spiel kann man weiter treiben. Bei der Eingabe von '; -- (Hochkomma + Semikolon + 2x Minuszeichen). Die doppelten Minuszeichen sind der Beginn eines Kommentars. Das System würde als diese eine (richtige!!) SQL-Abfrage ausführen:
SELECT username WHERE username = '';
Der Rest ( --' AND password = 'password'; ) ist ja Kommentar und stört deshalb nicht smile.gif.

Gibt man jetzt als Benutzernamen z.B. '; SELECT password WHERE username = 'admin'; -- ein, würde das System 2 Abfragen ausführen:
1. SELECT username WHERE username = ''; und
2. SELECT password WHERE username = 'admin';

Diese zweite Abfrage würde uns das Passwort für den Administrator (Benutzername = admin) liefern eek.gif.


Diese Technik des Einschleusens von (unbeabsichtigten) SQL-Statements hat in der Kombination mit einem zweiten Fehlern bei Datenbankservern - die Ausgabe von SQL Ergebnissen und das Anzeigen von Fehlern - dazu geführt, dass man die Benutzernamen und die Kennwörter von Mitbenutzern und Administratoren ermitteln konnte. Manche Datenbanken besitzen sogar Schnittstellen zu dem zugrundeliegenden Betriebssystem. Da die DB'en im Regelfall mit dem Betriebssystem-Administrationskonto laufen, konnte man sogar Admin am entsprechenden Rechner werden.

Inzwischen sollten für alle SQL-Datenbanken/Server entsprechende Fixes vorhanden sein, so dass die entsprechende Technik nicht mehr angewandt werden kann.

Ich rate allerdings auch dazu entsprechende Schnittstellenmethoden aufzurufen, z.B. bei PHP die Methode mysql_escape_string(), die die Sonderzeichen in den Eingaben maskiert oder bei der Eingabe von Daten diese auf "unreguläre" Zeichen zu untersuchen.
Niemand sollte seine HTML-Eingaben/HTML-Formen so bauen, dass Benutzereingaben ungeprüft direkt an die Datenbank zur Verarbeitung übergeben werden.

Ich hoffe ich habe Euch jetzt einigermaßen verwirrt :P

VoiDy


Eins noch: meine Erläuterung soll das SQL-Injection Problem vom Grundsatz her erläutern. Mit meinen angegebenen Beispielen lässt sich in Wirklichkeit - hoffe ich doch - kein System "knacken"
*the Voice* erstellt am 23.08.2004 um 11:33
*guguck*
bye.gif

Also, wenn luni seine Antwort nicht ergänzt, dann versuch ich das halt mal:

SQL Injection bezeichnet das Ausnutzen einer Computersicherheits-Lücke. Der Angreifer versucht SQL Abfragen zu manipulieren. Hierzu werden über die Applikation, die den Zugriff auf die Datenbank bereitstellt, SQL Statements eingefügt.

Oft zu finden sind SQL Injection Lücken in CGI Scripten, aber auch Programme, die andere Daten - etwa Webseiteninhalte oder E-Mails in SQL Datenbanken - eintragen, sind anfällig. Es wird versucht, weitere SQL Anforderungen einzuschleusen oder die Abfragen so zu manipulieren, dass man zusätzliche Daten erhält. Manche Datenbanksysteme bieten auch die Möglichkeit, Zugriff auf eine Shell zu erhalten, womit der ganze Server kompromitierbar wird.

@voidy:
reicht dir das als erweiterte Lösung?
Bis dahin hab ich 'meine' Lösung sogar verstanden *bg*
biggrin.gif wink.gif blushie.gif angel2-1.gif
VoiDy erstellt am 18.08.2004 um 08:52
@[lunatic]suicide

im Prinzip richtig, aber ich hätte gerne noch ein paar Ausführungen dazu, da ich denke, dass die wenigsten sich etwas darunter vorstellen können.

Deshalb bin ich noch nicht ganz zufriedengestellt.
[lunatic]suicide erstellt am 17.08.2004 um 16:53
das Einfügen von beliebigen SQL Strings in Formulare, die dann am Server ausgeführt werden
VoiDy erstellt am 17.08.2004 um 16:00
Ok, hier meine Frage:

Was verbirgt sich hinter dem Begriff "SQL Injection"? conf.gif
[lunatic]suicide erstellt am 17.08.2004 um 12:22
nachdem keiner den Namen herausfand, hab ich die Fragestellung geändert - wo ist dein Problem?
Für den, den es interessiert: Matthias Thon

VoiDy Du bist immer noch dran smile.gif
*the Voice* erstellt am 16.08.2004 um 23:36
ich will jetzt mal kleinlich sein!

Du fragtest nach dem Namen des Metzingers, der... - nicht nach dem Namen des Teams, das...!

Und wie heißt dieser wichtige Erdenbürger nun????
aliengif aliengif aliengif
Seite: «[2] [3] [4] [5] [6] » « Vorherige Seite | Nächste Seite »


mindestbreite
Main Links Unten mindestbreite Main Rechts Unten