AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

mysql abfrage rückgabewert

Ein Thema von Delphi-Phil · begonnen am 30. Nov 2008 · letzter Beitrag vom 1. Dez 2008
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#41

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 13:54
so ist der sql code jetzt:

$sql = "SELECT * FROM nl_anmeldungen WHERE md5wert = '$hash'";
  Mit Zitat antworten Zitat
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#42

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 14:01
jetzt möchte ich noch bei richtiger abfrage in die spalte bestaetigung ein true reinschreiben.

Wie mache ich das?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#43

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 14:03
UPDATE nl_anmeldungen SET bestaetigung = 'TRUEWHERE md5wert = '$hash' [edit] Sry, hatte nicht richtig hingesehen. Aber wieso ist das ein Varchar(50)-Feld? [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#44

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 14:10
Zitat von Delphi-Phil:
so ist der sql code jetzt:

$sql = "SELECT * FROM nl_anmeldungen WHERE md5wert = '$hash'";
Nein nein nein! (Und nochmals nein!)

Du musst $hash maskieren:
Code:
$sql = "SELECT * FROM nl_anmeldungen WHERE md5wert = '".mysql_real_escape_string($hash)."'";
Das ist wirklich wichtig! Ein User könnte sonst (vielleicht auch unbeabsichtigt) deiner Datenbank Schaden zufügen. Du glaubst gar nicht, wieviele Hacker sich die Finger nach einer Seite wie deiner lecken.

LG,
Xong
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#45

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 14:17
Siehe dazu auch hier: http://www.unixwiz.net/techtips/sql-injection.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#46

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 14:44
danke an xong das du mich so ausdrücklich auf die sicherheit hinweißt!!
Wirklich toll von Dir!!

Muss ich diesen Code den auch so schützen?

$sql1 = "UPDATE nl_anmeldungen SET bestaetigung = 'true' WHERE md5wert = '$hash'";
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#47

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 14:52
Unbedingt. Lass Dir das SQL mal ausgeben (nur ausgeben, nicht ausführen ), wenn man folgenden Hash übergibt:
Code:
' OR 1=1;DELETE FROM nl_anmeldungen WHERE 'A' = 'A
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#48

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 15:01
Zitat von Xong:
Nein nein nein! (Und nochmals nein!)

Du musst $hash maskieren:
Einspruch!

Ich wette, dass der Server, auf dem Delphi-Phil arbeitet, standardmäßig Magic Quotes aktiviert hat. Dein escapen führt damit zu noch mehr Problemen. Also entweder vorher noch stripslashes() anwenden, alle $_POST, $_GET usw. -Variablen komplett durch stripslashes laufen lassen, oder einfach das Escapen weglassen.

Edit:// @DeddyH: Dein Code funktioniert nicht, da du mit MySQL-Query nur ein Query ausführen kannst. Ein Semikolon führt zu einem SQL-Syntax-Fehler.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#49

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 15:04
Der erste Teil genügt aber für den Login ohne Account.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#50

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 15:04
Zitat von Delphi-Phil:
danke an xong das du mich so ausdrücklich auf die sicherheit hinweißt!!
Wirklich toll von Dir!!
=)
Ist ja auch gar nicht böse gemeint. Aber bei sowas muss man immer mit Nachdruck schreiben, damit´s auch wirklich hängen bleibt. Ich habe schon so viele Seiten gesehen, auf denen Sachen wie "This site was hacked by..." standen.
Außerdem können solche Seiten den zugrundeliegenden Server zu Spamschleudern machen und dann kannst du sogar rechtliche Probleme bekommen.

Zitat von Delphi-Phil:
Muss ich diesen Code den auch so schützen?

$sql1 = "UPDATE nl_anmeldungen SET bestaetigung = 'true' WHERE md5wert = '$hash'";
Also...
Du musst alles schützen, was von außen kommt, also alles was nicht in deinem Skript definiert wird.

Beispiel:
Du hast im HTML sowas stehen:
Code:
<label for="name">Name:</label> <input type="checkbox" name="name" id="name" />
Im PHP setzt du dann folgende SQL-Abfrage ab:
Code:
mysql_query("INSERT INTO table (name) VALUES('".$_POST['name']."')")
Was glaubst du, was passiert, wenn in Name '); DROP TABLE table;-- steht?

Du würdest folgenden Code an die Datenbank schicken: INSERT INTO table (name) VALUES(''); DROP TABLE table;--') Es wären noch viel schlimmere Dinge möglich. Jemand könnte versuchen Zugriff auf deine Datenbank zu bekommen, indem er die Passwörter ändert.
Vielleicht sogar so, dass du es gar nicht merkst, indem er einfach nur einen neuen Benutzer hinzufügt. Viels ist möglich. Und du musst das verhindern.

Richtig wäre in PHP folgendes:
Code:
mysql_query("INSERT INTO table (name) VALUES('".mysql_real_escape_string($_POST['name'])."')")
Dann wird nämlich INSERT INTO table (name) VALUES('\'); DROP TABLE table;--)' abgeschickt und alles wäre in Ordnung.


Merke: All Input Is Evil!

LG,
Xong
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz