Willkommen auf dem Portal für Mediengestalter
|
|
|
| Autor |
Nachricht |
ma1973
Threadersteller
Dabei seit: 17.02.2006
Ort: borken
Alter: 35
Geschlecht:
|
Verfasst Mi 21.03.2007 09:23
Titel
|
 |
|
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
verdammt
|
|
| |
|
 |
eViLaSh
Dabei seit: 22.05.2003
Ort: Texas
Alter: 25
Geschlecht:
|
Verfasst Mi 21.03.2007 09:41
Titel
|
 |
|
| ma1973 hat geschrieben: | 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
verdammt  |
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
|
|
| |
|
 |
baskoralle
Dabei seit: 17.02.2006
Ort: hamburch
Alter: 34
Geschlecht:
|
Verfasst Mi 21.03.2007 09:50
Titel
|
 |
|
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
|
|
| |
|
 |
magicslider
Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht:
|
Verfasst Mi 21.03.2007 10:33
Titel
|
 |
|
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
Zuletzt bearbeitet von magicslider am Mi 21.03.2007 10:34, insgesamt 1-mal bearbeitet
|
|
| |
|
 |
ma1973
Threadersteller
Dabei seit: 17.02.2006
Ort: borken
Alter: 35
Geschlecht:
|
Verfasst Mi 21.03.2007 10:43
Titel
|
 |
|
thx an ALLE
|
|
| |
|
 |
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 31
Geschlecht:
|
Verfasst Mi 21.03.2007 20:36
Titel
|
 |
|
| 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...
|
|
| |
|
 |
SURE612
Dabei seit: 02.12.2005
Ort: Bärlin / CB
Alter: -
Geschlecht:
|
Verfasst Mi 21.03.2007 20:40
Titel
|
 |
|
wie ist das eigentlich wenn ich per POST die variablen übergebe.
da gelten ja dann die selben sicherheitsvorkehrungen wie über GET oder!?
|
|
| |
|
 |
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 31
Geschlecht:
|
Verfasst Mi 21.03.2007 21:28
Titel
|
 |
|
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...
|
|
| |
|
 |
| |
|
 |
| Ä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 ...
|
 |
|
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.
|
|