Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

DeathlyDennis

unregistriert

1 Zum Seitenanfang

Mittwoch, 15. September 2004, 14:18

anmeldung spinnt wegen ;

Hallo,
ich hab ein paar probleme bei der anmeldung!
wenn man bei der anmeldung eintippt:

;

am ende, dann spinnt das script. sagt error nähe input. wie kann ich das verhindern?

danke dennis


PS.: Auf meiner Homepage!!!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeathlyDennis« (15. September 2004, 14:28)

 

Alfons_G

Routinier

Dabei seit: 26.04.2003

Beiträge: 486

 

2 Zum Seitenanfang

Mittwoch, 15. September 2004, 14:28

Das lässt auf eine Fehlermeldung der MySQL-Datenbank schließen. Eingaben, welche in einer Datenbank gespeichert werden, soll man IMMER mit addslashes() maskieren :finger:.
Sonst kann es passieren, dass ein böswilliger Mensch das Skript um ungeahnte "Fähigkeiten" erweitert (Stichwort SQL-Injection).

Alfons
 

DeathlyDennis

unregistriert

3 Zum Seitenanfang

Mittwoch, 15. September 2004, 14:29

und wo wird das gemacht??


mein code:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
function create_user(&$inhalt)
{
        //User eintragen
        global $conn;
        extract($_POST);
        
        $succ_inhalt "";

        if(empty($realname))
                $succ_inhalt .= "<li>Sie müssen ihren wirklichen Namen angeben</li>\n";
                
        if(empty($nick))
                $succ_inhalt .= "<li>Sie müssen einen Nicknamen angeben</li>\n";

        $nick2 mysql_fetch_object(mysql_query("SELECT nick FROM ".USER_TABLE." WHERE nick='$nick'",$conn));
        if($nick == $nick2->nick)
                $succ_inhalt .= "<li>Dieser Nickname ist bereits vergeben</li>\n";
                
        if(empty($femail))
                $succ_inhalt .= "<li>Sie müssen ihre E-Mail Adresse angeben</li>\n";
        elseif(!preg_match("=[a-z0-9\.\_\-]{3,}@[a-z0-9\-]{3,}.[a-z\.\-]{2,5}=i",$femail))
                $succ_inhalt .= "<li>Die E-Mail Adresse, die sie angegeben haben ist nicht korrekt.</li>\n";
                
        if(empty($fpass) || empty($fpassw))
                $succ_inhalt .= "<li>Sie müssen ein Passwort angeben</li>\n";
        elseif($fpass != $fpassw)
                $succ_inhalt .= "<li>Passwort und Passwort-Wiederholung stimmen nicht überein</li>\n";
        
        if(empty($ftag) || empty($fmonat) || empty($fjahr))
                $succ_inhalt .= "<li>Sie müssen ihr Geburtsdatum angeben</li>\n";
        
        if(empty($plz))
                $succ_inhalt .= "<li>Sie müssen ihre Postleitzahl angeben</li>\n";
                
        if(empty($region))
                $succ_inhalt .= "<li>Sie müssen ihre Region angeben</li>\n";
                
        if(empty($land))
                $succ_inhalt .= "<li>Sie müssen ihr Heimatland angeben</li>\n";
                
        if(empty($beschreibung))
                $succ_inhalt .= "<li>Sie müssen eine kurze beschreibung von sich angeben</li>\n";
                
        if(empty($hobbys))
                $succ_inhalt .= "<li>Sie müssen uns sagen, was für Hobbys sie haben</li>\n";
                
        if(empty($mag_schon) || empty($mag_nicht))
                $succ_inhalt .= "<li>Sagen sie uns doch, was sie mögen / nicht mögen</li>\n";
        {

                
                $succ_inhalt "<br /><ul style=\"color:#ff0000;\">\n".$succ_inhalt."</ul>\n";
                $inhalt str_replace("{succ_inhalt}",$succ_inhalt,$inhalt);
                
                foreach($_POST as $key=>$value)
                        $inhalt str_replace('{'.$key.'}',$value,$inhalt);

                $inhalt str_replace('{randomize}'$r$inhalt);

                $inhalt = ($_POST['geschlecht']=="m")? str_replace("{geschlecht_m}"," checked=\"checked\"",$inhalt):str_replace("{geschlecht_w}"," checked=\"checked\"",$inhalt);
                $inhalt = ($_POST['geschlecht']=="m")? str_replace("{geschlecht_w}","",$inhalt):str_replace("{geschlecht_m}","",$inhalt);
                        
                return false;
        }
        else
        {
                //kein Fehler => speichern
                $fpass md5($fpass);
                $zeit  time();
                $geb_date mktime(0,0,0,$fmonat,$ftag,$fjahr);
                mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$plz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon','','',1,$zeit)",$conn) or die(mysql_error());
                                
        
                $groesse 500*1024;
                
                if(isset($_FILES['bild']) && !$_FILES['bild']['error'] && $_FILES['bild']['size']<=$groesse)
                {
                        $id mysql_insert_id();
                
                        //Upload vollziehen
                        $img_src "./bilder/".$id.".jpg";
                        move_uploaded_file($_FILES['bild']['tmp_name'], $img_src);
                        mysql_query("UPDATE ".USER_TABLE." set bild='$id.jpg' WHERE id=$id",$conn);
        
                        //evtl. noch resizen
                        $maxw 300;
                        $im imagecreatefromjpeg($img_src);
                        list($src_width$src_height) = getimagesize($img_src);
                        if($src_width $maxw)
                        {
                                //resize muss volzogen werden
                                $new_width  $maxw;
                                $new_height $src_height $maxw $src_width;
                
                                $new_image imagecreatetruecolor($new_width$new_height);
                                imagecopyresampled($new_image$im0000$new_width,$new_height$src_width$src_height);
                                imagejpeg($new_image$img_src100);
                        }
                        
                        mysql_query("UPDATE ".USER_TABLE." SET bild='$id.jpg' WHERE id=$id",$conn);

                        //fertig
                }
        
                echo 'Danke dass sie sich in dieser Community registriert haben.<br />
                Wir wünschen ihnen noch einen angenehmen Aufenthalt.<br />
                Sie können sich jetzt über die beiden Login-Felder einloggen.';
        }  //kein Fehler ende
        
        return true;
}

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »DeathlyDennis« (15. September 2004, 15:20)

 

jperl

Super Moderator

Dabei seit: 09.04.2003

Beiträge: 3 453

 

4 Zum Seitenanfang

Mittwoch, 15. September 2004, 14:42

Zitat

Original von Alfons_G
Eingaben, welche in einer Datenbank gespeichert werden, soll man IMMER mit addslashes() maskieren :finger:.


wer lesen kann ist klar im vorteil. :P

überall da wo der user ein ; eingeben kann.
ansonsten kann der user nämlich deine tabellen löschen usw ;)

jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
 

DeathlyDennis

unregistriert

5 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:08

meint ihr soetwas?

$nick = str_replace(";","\;",$nick);
mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$plz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon','','',1,$zeit)",$conn) or die(mysql_error());
 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

6 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:10

Wieso benutzt du einen Befehl nicht, wenn man ihn dir sagt?

PHP-Quelltext

1
2
3
4
5
$nick addslashes($nick);

mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$p
lz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon',''
,'',1,$zeit)",$conn) or die(mysql_error());


Und nutze endlich die PHP Tags X(
nyuuu
 

DeathlyDennis

unregistriert

7 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:16

hallo,
also so?

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$nick addslashes($nick);
$fpass addslashes($fpass);
$realname addslashes($realname);
$femail addslashes($femail);
$geschlecht addslashes($geschlecht);
$geb_date addslashes($geb_date);
$plz addslashes($plz);
$land addslashes($land);
$region addslashes($region);
$beschreibung addslashes($beschreibung);
$hobbys addslashes($hobbys);
$mag_nicht addslashes($mag_nicht);
$mag_schon addslashes($mag_schon);

mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$p
lz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon',''
,'',1,$zeit)",$conn) or die(mysql_error());



meint ihr das so`?
 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

8 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:27

Probiers doch mal aus.
nyuuu
 

jperl

Super Moderator

Dabei seit: 09.04.2003

Beiträge: 3 453

 

9 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:28

wenns funktioniert meinen wirs so.

wenns aber ned funzt dann probiers so: ;)

PHP-Quelltext

1
$nick addcslashes($nick,";");


jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
 

Peter

Kaiser

Dabei seit: 27.10.2002

Beiträge: 1 122

 

10 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:36

Zitat

Original von DeathlyDennis
hallo,
also so?

PHP-Quelltext

1
2
3
4
5
6
$nick addslashes($nick);
$fpass addslashes($fpass);
$realname addslashes($realname);
$femail addslashes($femail);
$geschlecht addslashes($geschlecht);
$geb_date addslashes($geb_date);



meint ihr das so`?


Igitt,register globals siond on urgh.

machs z.b. so:

PHP-Quelltext

1
2
3
4
5
6
7
8
<?php
foreach($_POST as $key=>$name){
$_POST[$key]=mysql_escape_string ($name);}

$nick $_POST["nick"];
$fpass $_POST["fpass"];
//....
?>


Diese Funktion ist besser und so sieht die Sache auch besser aus und ist sicherer und braucht keine register globals .-)



http://de3.php.net/manual/de/function.my…cape-string.php
 

DeathlyDennis

unregistriert

11 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:48

@peter wo muss das genau hin?
 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

12 Zum Seitenanfang

Mittwoch, 15. September 2004, 15:51

Wieso eigentlich nicht gleich so?

PHP-Quelltext

1
2
3
<?php
foreach($_POST as $key=>$name){
${$key}=mysql_escape_string ($name);}


Solche Schleifen mögen praktisch sein, aber damit kannst nun jeder ziemlich jede Variable setzen die man möchte ;)
nyuuu

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Matt« (15. September 2004, 15:54)

 

Peter

Kaiser

Dabei seit: 27.10.2002

Beiträge: 1 122

 

13 Zum Seitenanfang

Mittwoch, 15. September 2004, 16:01

Zitat

Original von Matt
Wieso eigentlich nicht gleich so?

PHP-Quelltext

1
2
3
<?php
foreach($_POST as $key=>$name){
${$key}=mysql_escape_string ($name);}


Solche Schleifen mögen praktisch sein, aber damit kannst nun jeder ziemlich jede Variable setzen die man möchte ;)


hä?
ich verstehe nicht was du meinst....

Wenn ich das mit meinem $_POST mache und die Variablen auch per
$vari=$_POST["var"]; initialisiere UND register globals =off habe, dann kann ein user von mir aus $_POST["var2"]; setzen, aber solange ich nicht
$var2=$_POST["var2"] mache wird $var2 ja nicht beeinflusst.


Deine Schleife hingegen hebelt register globals eigentlich aus... (wenn man seine variablen nicht explizit nochmals initiert. siehe das berühmte $auth beispiel)


@Matt: also hä?

@dennis: du hattest vorher dieses adslashes beisoiel gepostet, darüber muss das hin (am besten ganz am anfang des scripts und für jede variable die du vom formular übernimmst musst du dann
$variable=$_POST["variable"]; machen.
Das addslashes brauchst du dann nicht mehr
 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

14 Zum Seitenanfang

Mittwoch, 15. September 2004, 16:09

Zitat

Original von Peter

Zitat

Original von Matt
Wieso eigentlich nicht gleich so?

PHP-Quelltext

1
2
3
<?php
foreach($_POST as $key=>$name){
${$key}=mysql_escape_string ($name);}


Solche Schleifen mögen praktisch sein, aber damit kannst nun jeder ziemlich jede Variable setzen die man möchte ;)


hä?
ich verstehe nicht was du meinst....

Wenn ich das mit meinem $_POST mache und die Variablen auch per
$vari=$_POST["var"]; initialisiere UND register globals =off habe, dann kann ein user von mir aus $_POST["var2"]; setzen, aber solange ich nicht
$var2=$_POST["var2"] mache wird $var2 ja nicht beeinflusst.


Deine Schleife hingegen hebelt register globals eigentlich aus... (wenn man seine variablen nicht explizit nochmals initiert. siehe das berühmte $auth beispiel)


@Matt: also hä?

@dennis: du hattest vorher dieses adslashes beisoiel gepostet, darüber muss das hin (am besten ganz am anfang des scripts und für jede variable die du vom formular übernimmst musst du dann
$variable=$_POST["variable"]; machen.
Das addslashes brauchst du dann nicht mehr


Das einzige Hä meinerseits: $auth Beispiel? Berühmt 8o Wie wo was?

Mein letzter Satz bezieht sich auf meine eigene Kreation.

1 - 1 = 0 War wohl nichts meinerseits...

Ne, den letzten Satz hatte ich in rrtum bezogen auf deinen Code geschrieben, nach der Erkenntnis wollte ich ihn dann nicht mehr löschen und schrieb ein eigenes Beispiel ;)
nyuuu
 

Peter

Kaiser

Dabei seit: 27.10.2002

Beiträge: 1 122

 

15 Zum Seitenanfang

Mittwoch, 15. September 2004, 16:49

PHP-Quelltext

1
2
3
4
5
6
7
8
9
<?php

if(($user=="admin")&&($pass=="richtig")){
$auth=true;}

if($auth==true){
echo "du bist eingeloggt";}

?>


Wenn ich das jetzt mit
domain.de/test.php?auth=true aufrufe bin ich eingeloggt mit register globals, bzw deinem Script ;-)


Sagt dir das jetzt was?
ist doch eigentlich sehr bekannt ;-)
^-^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Peter« (15. September 2004, 16:50)

 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

16 Zum Seitenanfang

Mittwoch, 15. September 2004, 17:01

Sagen tut es mir nichts, aber ich verstehe es.
Und dass das mit meinem Skript geht, hab ich ja geschrieben.
Ich würde das ja auch nie nutzen ;)

Mh...ups, mein IRC Bot ist betroffen :P

Für die, die sowas verhindern wollen:

www.php.net/define
nyuuu
 

Peter

Kaiser

Dabei seit: 27.10.2002

Beiträge: 1 122

 

17 Zum Seitenanfang

Mittwoch, 15. September 2004, 17:20

naja , ich glaube damit kommst du dann nicht weit, denn eine konstante kann man nicht ändern!
-> sie ist immer aus oder an, nicht änderbar
 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

18 Zum Seitenanfang

Mittwoch, 15. September 2004, 17:30

Wüso?
Normalerweise wird jedes Skript einmal ausgeführt.
Wenn z. B. ein Cookie gesetzt ist, setzt man die Konstante. Wenn nicht, eben nicht. Man könnte zwar auch gleich nur das Cookie abfragen, aber sonst hätte ich ja keine Begründung.
nyuuu
 

DeathlyDennis

unregistriert

19 Zum Seitenanfang

Mittwoch, 15. September 2004, 19:30

habs mal so gemacht!

PHP-Quelltext

1
2
3
4
if(empty($land))
                $succ_inhalt .= "<li>Sie müssen ihr Heimatland angeben</li>\n";
        elseif(!preg_match("=[a-zA-Z0-9]=i",$land))
         $succ_inhalt .= "<li>Sie verwenden für ihre Heimatland Sonderzeichen!</li>\n";


aber er prüft nur denn ersten zeichen!!! wieso net alle?
 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

20 Zum Seitenanfang

Mittwoch, 15. September 2004, 19:31

http://hackgrid.gu1.info/reg_exp ;)

PHP-Quelltext

1
elseif(!preg_match("/^[a-zA-Z0-9]$/i",$land))
nyuuu