mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 08.01.2009 20:44 Benutzername: Passwort: Auto-Login

Thema: mysql > variabel übergabe funzt nicht .. vom 20.03.2007

Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> mysql > variabel übergabe funzt nicht ..
Seite: Zurück  1, 2, 3, 4  Weiter
Autor Nachricht
ma1973
Threadersteller

Dabei seit: 17.02.2006
Ort: borken
Alter: 35
Geschlecht: Männlich
Verfasst Mi 21.03.2007 09:23
Titel

Antworten mit Zitat Zum Seitenanfang

*Schnief* jetzt weiss ich gar nichst mehr ... ist das absolut murx
und jemand könnte der DB schaden zufügen oder nicht?!

soll ich das ganze wieder vollends verwerfen ..... es klappt doch so
schön und habe sogar ein anflug von erfogserlebniss gespührt *Schnief*

verdammt *Schnief*
  View user's profile Private Nachricht senden
eViLaSh

Dabei seit: 22.05.2003
Ort: Texas
Alter: 25
Geschlecht: Männlich
Verfasst Mi 21.03.2007 09:41
Titel

Antworten mit Zitat Zum Seitenanfang

ma1973 hat geschrieben:
*Schnief* jetzt weiss ich gar nichst mehr ... ist das absolut murx
und jemand könnte der DB schaden zufügen oder nicht?!

soll ich das ganze wieder vollends verwerfen ..... es klappt doch so
schön und habe sogar ein anflug von erfogserlebniss gespührt *Schnief*

verdammt *Schnief*



wenn du es jetzt so gemacht hast, wie ich dir den code geschrieben habe und in deiner mysql-anweisung keine veriable auftaucht bist du sicher *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
baskoralle

Dabei seit: 17.02.2006
Ort: hamburch
Alter: 34
Geschlecht: Männlich
Verfasst Mi 21.03.2007 09:50
Titel

Antworten mit Zitat Zum Seitenanfang

versuch einfach das zu beherzigen was rob gepostet hat. ich mein ein wenig sicherheit muss schon sein. dir is ja nicht geholfen wenn es dir deine datenbank zerschiesst oder? kopf nicht hängen lassen, ein bisschen sicherheit einbauen und weiter gehts...

baskoralle
  View user's profile Private Nachricht senden
magicslider

Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht: Männlich
Verfasst Mi 21.03.2007 10:33
Titel

Antworten mit Zitat Zum Seitenanfang

hiho,

wollte keine verwirrung stiften, sorry.

# eViLaSh
hast recht,wenn keine variable an die query übergeben wird, dann bedarf es auch keinem schutz.



#rob danke für den hinweis auf den rechtschreibfehler ! der rest ist dann allerdings weniger konstruktiv !
mysql_real_escape_string() ist wesentlich anfälliger als is_numeric(), dann besser über prepare, . . .
nach einem is_numeric() kann kein mysql_real_escape_string() mehr greifen, numeric ist kein string !

wie ich geschrieben habe, ich kann mir nicht vorstellen das hier wirklich nur ein ortsnamen übergeben
werden soll, dann wäre ja 0 / 1 als bedingung ausreichend . anders herum wäre es unsinnig jeden ortsnamen zu
prüfen. die ifelse würde auch etwas länger werden Lächel


Zuletzt bearbeitet von magicslider am Mi 21.03.2007 10:34, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
ma1973
Threadersteller

Dabei seit: 17.02.2006
Ort: borken
Alter: 35
Geschlecht: Männlich
Verfasst Mi 21.03.2007 10:43
Titel

Antworten mit Zitat Zum Seitenanfang

thx an ALLE Lächel
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 31
Geschlecht: Männlich
Verfasst Mi 21.03.2007 20:36
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
wenn keine variable an die query übergeben wird, dann bedarf es auch keinem schutz.

Ja, aber wenn diese Zeile hier im Code vorkommt (und das tut sie scheinbar), dann kann man per URL auch SQL-Code übergeben.
Code:
$result= @MYSQL_QUERY( "SELECT * FROM cc_enduser WHERE ort_id='" . $_GET["ort"] . "' );

Und sicherlich ist es so vorgesehen, daß hier einfach nur eine id (also eine Zahl) übergeben werden soll, aber wenn jemand SQL-Code an den URL hängt, dann hat man hier ein Problem.
Rufe ich die Seite mit http://seite.de?ort=1';DROP DATABASE; auf, dann ist die DB ruckzuck leer...
  View user's profile Private Nachricht senden
SURE612

Dabei seit: 02.12.2005
Ort: Bärlin / CB
Alter: -
Geschlecht: Männlich
Verfasst Mi 21.03.2007 20:40
Titel

Antworten mit Zitat Zum Seitenanfang

wie ist das eigentlich wenn ich per POST die variablen übergebe.
da gelten ja dann die selben sicherheitsvorkehrungen wie über GET oder!?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 31
Geschlecht: Männlich
Verfasst Mi 21.03.2007 21:28
Titel

Antworten mit Zitat Zum Seitenanfang

Ja, dafür gilt das gleiche. Es ist natürlich nicht so offensichtlich. Man kann nicht so einfach versuchen, bösartigen Code zu übergeben, indem man einfach was an den URL hängt.
Aber es ist auch nicht wirklich schwer, POST-Daten an eine Website zu schicken.

Die GET-Daten sind meist ein größeres Problem, weil sie halt so offensichtlich sind. Da gibt es oftmals irgendwelche Idioten, die zum Spaß versuchen, irgendwelchen Mist zu übergeben. Das hat man mit den POST-Daten zwar nicht so, aber wenn jemand einen Angriff auf deine Site starten will, dann schaut er halt einmal in den Quellcode und shon sieht er, welche Namen die Formularfelder haben und was per POST verschickt wird.

Alle Daten, die von außen an dein Script übergeben werden, sollten geprüft und bereinigt werden.
Wenn du z.B. eine Zahl als Eingabe erwartest, dann kannst du z.B. mit is_numeric prüfen, ob es sich auf wirklich um eine Zahl handelt und die Variable nur dann in dein Script einbauen.
Wenn du einen String als Eingabe erwartest, dann könntest du schauen, daß SQL-Code rausgefiltert wird oder besondere Zeichen halt so escaped werden, daß sie in deine Funktion eingebaut, nicht mehr schädlich sein können.
Wenn z.B. vor Anführungszeichen ein \ gestellt wird, dann ist die Gefahr meist schon keine mehr.
Es wäre nicht verkehrt, wenn du dir angewöhnst ein mysql_real_escape_string() auf alle Variablen (die von außen kommen) anzuwenden, bevor sie in dein Query kommen.
Also:
Code:
$res = mysql_query( "SELECT bla FROM blubb WHERE var = '". mysql_real_escape_string( $var_von_aussen )."'" );


Naja und vorher kann man halt auch noch einiges checken, z.B. ob eine Variable wirklich numerisch ist oder ein String. Oder wenn z.B. eine Mailadresse übermittelt werden soll, dann könnte man prüfen, ob auch wirklich nur alphanumerische Zeichen, der Punkt und das @-Zeichen enthalten sind (anderes darf in Mailadressen ja nicht vorkommen).
Für solche Fälle habe ich mir einige Check-Funktionen gebaut, die ich immer wieder einsetze.
Um z.B. eine Mailadresse auf ihre Gültigkeit zu prüfen, nutze ich folgende Funktion:
Code:
function check_adress( $email )
{
   $expression = "^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$";

   if ( ereg( $expression, $email ) )
   {
      return true;
   }
   else
   {
      return false;
   }
}

Kannst du gerne verwenden, wenn du das mal brauchst...
  View user's profile Private Nachricht senden
 
Ähnliche Themen (php-mysql) übergabe von formulardaten und abfrage m. mysql
[PHP]MySQL Connect funzt net
3-spaltiges Layout: variabel - fix - variabel
[php] variabel IN variabel
variabel > include ?
db >> tabelle >> variabel ...
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3, 4  Weiter
MGi Foren-Übersicht -> Programmierung


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.