Partnerseiten
SQL-Injection?

 
Neue Antwort erstellen    PCadept Forum Foren-Übersicht -> Webprogrammierung

Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
severus



Anmeldedatum: 15.11.2007
Beiträge: 3

BeitragVerfasst am: 27.02.2008, 11:54    Titel: SQL-Injection? Antworten mit Zitat

Ich beschäftige mich im Moment mit Webdesign und hab dabei gelesen, dass ich mich vor SQL-Injections schützen muss... Wie erkenne ich denn so eine Injection und was kann amn da machen?

Grüße, severus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
derhoesel



Anmeldedatum: 20.04.2007
Beiträge: 101

BeitragVerfasst am: 27.02.2008, 12:17    Titel: Antworten mit Zitat

Hallo erstmal und herzlich willkommen im Forum.

Unter einer SQL-Injection versteht man das ausführen von fremdem Code, der ohne dein Wissen, aber durch ein Script von dir, das z.B. eigentlich Informationen aus einer Datenbank auslesen soll, in deiner Datenbank ausgeführt wird.

Du schreibst, du beschäftigst dich mit Webdesign... Meinst du damit reines HTML/CSS oder programmierst du was dynamisches mit PHP/MySQL? Wenn du nämlich keine Datenbank verwendest, brauchst du auch keine Angst vor SQL-Injections zu haben.

Das Stichwort zum Schutz vor SQL-Injections lautet (bei PHP/MySQL) mysql_real_escape_string().
_________________
Embarassed Mein PC bei PCadept lol
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
severus



Anmeldedatum: 15.11.2007
Beiträge: 3

BeitragVerfasst am: 27.02.2008, 13:17    Titel: Antworten mit Zitat

Danke für die schnelle Antwort Smile
Ich meinte Webprogrammierer, also schon mit PHP/MySQL... Bin aber eben totaler anfänger.

Also wenn ich das mit mysql_real_escape_string richtig verstanden habe, muss ich das auf die Daten, die ich in die Datenbank eintrage anwenden. Aber wie mach ich das genau? muss ich das auf jede variable anwenden oder einfach auf die ganze anweisung?

Grüße, severus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
derhoesel



Anmeldedatum: 20.04.2007
Beiträge: 101

BeitragVerfasst am: 27.02.2008, 14:06    Titel: Antworten mit Zitat

Ok, wollte ich nur wissen.

Also: du musst die Funktion auf jede übergebene Variable anwenden, die was mit der Datenbank zu tun hat. Den Befehl auf die ganze Abfrage anzuwenden ist ne ganz schlechte Idee, schließlich maskiert er ja Anweisungen, so dass sie nicht ausgeführt werden...

Ein kleines Beispiel (simple Passwortabfrage - gegeben eine Tabelle benutzer mit Feldern username und passwort)

Der Standard-Abfrage, um zu schauen, ob ein Nutzer da ist, auf den die übergebenen Werte zutreffen - ohne mysql_real_escape_string():

Code:

$result = mysql_query("SELECT * FROM benutzer WHERE username = "'.$username.'" AND passwort = '".$passwort."'");

Bin ich jetzt ein böser Hacker, kann ich z.B. die Variablen mit
Code:

' OR ''='

belegen, wobei immer true rauskommt. => schon bin ich eingeloggt.

Die korrekte Abfrage muss also
Code:

$result = mysql_query("SELECT * FROM benutzer WHERE username = "'.mysql_real_escape_string($username).'" AND passwort = '".mysql_real_escape_string($passwort)."'");

lauten, da so keine SQL-Anweisungen in den Variablen an die Datenbank übergeben werden.

Das Ganze ist in den Kommentaren auf der von mir verlinkten Seite auch recht anschaulich erklärt.
_________________
Embarassed Mein PC bei PCadept lol
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen
Seite 1 von 1

 
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 
Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de
Optimiert mit freundlicher Unterstützung von SEO-phpBB.org