Sicherer Login

  • Hallo Leute,
    bei meinem aktuellen Projekt brauche ich ein sehr sicheres Loginsystem. Momentan sieht das Ganze ziemlich unsicher aus. Es gibt ein einfaches Formular, wo man Username und Passwort eingeben kann und dann versuchen, sich einzuloggen. Die Auswertung des Formulars habe ich in eine externe Datei names login.php gepackt. Wenn man login.php einfach so aufruft, dann wird man direkt auf index.php weitergeleitet, da man das Formular ja nicht ausgefüllt hat.


    //Formular

    Code
    <form method="post" action="login.php">
    <input title="Username" type="text" name="nickname" id="nickname" value="Username" onfocus="ClearLoginInput();" onfocusout="PutLoginInput();" maxlength="100" />
    <input title="Passwort" type="password" name="password" id="password" value="" maxlength="100" />
    <input type="submit" name="submit-login" value="einloggen" />
    </form>


    Fällt euch hier schon eine Sicherheitslücke auf? Also eigentlich kann man beim Formular ja nicht so viel falsch machen... Die Javascript-Funktionen sind dazu da das Attribut "value" zu manipulieren. Wenn man also das Inputfeld fokussiert, wird das value-Element geleert und wenn man es "ausfokussiert" dann wird es wieder mit "Username" gefüllt.



    Nun kommen wir zum PHP-Teil. Wie ihr sehen könnt ist das action-Attribut des Formulars auf login.php gesetzt. Deswegen nun die komplette login.php.

    PHP
    <span class="syntaxdefault"><br />    session_start</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-userid"</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                                                </span><span class="syntaxcomment">//User ist schon angemeldet<br /></span><span class="syntaxdefault">        header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    else </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                                                                                    </span><span class="syntaxcomment">//User ist noch nicht angemeldet<br /></span><span class="syntaxdefault">        if</span><span class="syntaxkeyword">(!isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"submit-login"</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxdefault"> AND $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"password"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                    </span><span class="syntaxcomment">//Alles ist angegeben<br /></span><span class="syntaxdefault">                $connection </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"localhost"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"yamram-dev"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"********"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                if </span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">mysql_select_db </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"yamram-dev"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $connection</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">  <br />                    header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=2"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                else </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                                                                        </span><span class="syntaxcomment">//LOGIN<br /></span><span class="syntaxdefault">                    echo </span><span class="syntaxstring">"Username: "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">                    $sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"SELECT * FROM `user` WHERE `nickname` = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"';"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">                    $result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                    if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">mysql_num_rows</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$result</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                        while</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$row </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_fetch_row</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$result</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                            if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"password"</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $row</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                                $sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"INSERT INTO  `logs` (`id`, `nickname`, `logdate`) VALUES (NULL ,  '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"', CURRENT_TIMESTAMP)"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">                                mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                                $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-userid"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $row</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">                                $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-username"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $row</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">                                header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?success=1"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                            else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                                header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=4"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                    else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                        header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=3"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=1"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span>


    Es funktioniert alles, aber ich glaube, es ist seeeeehr unsicher.
    Ich denke mal, dass ihr den ganzen Code versteht. Denn er ist ziemlich simpel programmiert. Dazu möchte ich jetzt aber folendes von euch wissen:


    • Was kann ich allgemein besser machen?
    • Wie benutzt ich OOP? (Selber ist mir nichts eingefallen...)
    • Wie kann ich das Loginsystem sicherer machen?


    Ich freue mich auf eure Antworten und verbleibe mit freundlichen Grüßen,
    Philipp E.

  • So, das habe ich eben gemacht. Hätte ich eigentlich auch vorher wissen können...


    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />    session_start</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-userid"</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                                                </span><span class="syntaxcomment">//User ist schon angemeldet<br /></span><span class="syntaxdefault">        header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    else </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                                                                                    </span><span class="syntaxcomment">//User ist noch nicht angemeldet<br /></span><span class="syntaxdefault">        if</span><span class="syntaxkeyword">(!isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"submit-login"</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxdefault"> AND $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"password"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                    </span><span class="syntaxcomment">//Alles ist angegeben<br /></span><span class="syntaxdefault">                $connection </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"localhost"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"yamram-dev"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"********"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                if </span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">mysql_select_db </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"yamram-dev"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $connection</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">  <br />                    header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=2"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                else </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">                                                                                        </span><span class="syntaxcomment">//LOGIN<br /></span><span class="syntaxdefault">                    echo </span><span class="syntaxstring">"Username: "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">                    $sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"SELECT * FROM `user` WHERE `nickname` = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">mysql_real_escape</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">]).</span><span class="syntaxstring">"';"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">                    $result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                    if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">mysql_num_rows</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$result</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                        while</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$row </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_fetch_row</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$result</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                            if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"password"</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $row</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                            <br />                                $sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"INSERT INTO  `logs` (`id`, `nickname`, `logdate`) VALUES (NULL ,  '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">mysql_real_escape</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">]).</span><span class="syntaxstring">"', CURRENT_TIMESTAMP)"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">                                mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                                $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-userid"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $row</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">                                $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-username"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $row</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">                                header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?success=1"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                            else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                                header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=4"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                    else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                        header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=3"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=1"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">?><br /></span></span>
  • OK. Ich habe den Code in einigen Teilen aktualisiert:


    Code
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />    session_start</span><span class="syntaxkeyword">();<br />    if(isset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-userid"</span><span class="syntaxkeyword">])) {                                                                </span><span class="syntaxcomment">//User ist schon angemeldet<br />        </span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php"</span><span class="syntaxkeyword">);<br />    }<br />    else {                                                                                                    </span><span class="syntaxcomment">//User ist noch nicht angemeldet<br />        </span><span class="syntaxkeyword">if(!isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"submit-login"</span><span class="syntaxkeyword">])) {<br />            </span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php"</span><span class="syntaxkeyword">);<br />        }<br />        else {<br />            if(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">] !== </span><span class="syntaxstring">"" </span><span class="syntaxkeyword">AND </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"password"</span><span class="syntaxkeyword">] !== </span><span class="syntaxstring">""</span><span class="syntaxkeyword">) {                                    </span><span class="syntaxcomment">//Alles ist angegeben<br />                </span><span class="syntaxdefault">$connection </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"localhost"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"yamram-dev"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"********"</span><span class="syntaxkeyword">);<br />                if (!</span><span class="syntaxdefault">mysql_select_db </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"yamram-dev"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$connection</span><span class="syntaxkeyword">)) {  <br />                    </span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=2"</span><span class="syntaxkeyword">);<br />                }<br />                else {                                                                                        </span><span class="syntaxcomment">//LOGIN<br />                    </span><span class="syntaxkeyword">echo </span><span class="syntaxstring">"Username: "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"<br />"</span><span class="syntaxkeyword">;<br />                    </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"SELECT * FROM `user` WHERE `nickname` = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">mysql_real_escape_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">]).</span><span class="syntaxstring">"';"</span><span class="syntaxkeyword">;<br />                    </span><span class="syntaxdefault">$result </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br />                    if(</span><span class="syntaxdefault">$row </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysql_fetch_assoc</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$result</span><span class="syntaxkeyword">)) {<br />                        if(</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"password"</span><span class="syntaxkeyword">]) == </span><span class="syntaxdefault">$row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"password"</span><span class="syntaxkeyword">]) {<br />                            </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"INSERT INTO  `logs` (`id`, `nickname`, `logdate`) VALUES (NULL ,  '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">mysql_real_escape_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">]).</span><span class="syntaxstring">"', CURRENT_TIMESTAMP)"</span><span class="syntaxkeyword">;<br />                            </span><span class="syntaxdefault">mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br />                            </span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-userid"</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"id"</span><span class="syntaxkeyword">];<br />                            </span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"c1l2o3u4d-username"</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nickname"</span><span class="syntaxkeyword">];<br />                            </span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?success=1"</span><span class="syntaxkeyword">);<br />                        }<br />                        else {<br />                                </span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=4"</span><span class="syntaxkeyword">);<br />                        }<br />                    }<br />                    else {<br />                        </span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=3"</span><span class="syntaxkeyword">);<br />                    }<br />                }<br />                </span><span class="syntaxdefault">mysql_close</span><span class="syntaxkeyword">();<br />            }<br />            else {<br />                </span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:index.php?error=1"</span><span class="syntaxkeyword">);<br />            }<br />        }<br />    }<br /></span><span class="syntaxdefault">?><br /></span></span>


    Vorteile des neuen Codes:

    • kürzer (optimiert)
    • sicherer (mysql_real_escape_string())


    Nun:



    Was kann ich allgemein besser machen?
    Wie benutzt ich OOP? (Selber ist mir nichts eingefallen...)
    Wie kann ich das Loginsystem sicherer machen?

  • Versuch mal, dich daran zu gewöhnen, den Code mit Syntax-Highlight zu versehen.


    Nimm statt zig-mal

    PHP
    <span class="syntaxdefault">else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">  if </span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br />}</span><span class="syntaxdefault"> </span>


    lieber

    PHP
    <span class="syntaxdefault">elseif </span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br />}</span><span class="syntaxdefault"> </span>


    zu OOP: Vielleicht kannst du eine Session-Klasse anlegen, die alle Daten (z. B. den Anmeldenamen) verwaltet?


    Und guck dir mal den Thread zu meinem Login-System an, ich bin sicher, mehrere genannten Punkte treffen auch auf dein Script zu.


    Hoffe, ich konnte helfen,
    webmaster3000

  • Sören:
    OOP habe ich zwar noch nie angewendet, deswegen fehlt mir wahrscheinlich die Praxis ;) Aber die Theorie habe ich ganz gut drauf :)


    webmaster3000:
    Okay Danke. Daraus habe ich nun folgendes entnommen und dann etwas geändert. Um es Hackern, die Fehlermeldungen provozieren wollen, habe ich nun ganz oben


    Code
    <span class="syntaxdefault"><br />error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault"></span>


    eingebaut. Mehr habe ich jetzt eigentlich nicht gefunden.


    Ich frage nochmal: Wie meinst du das mit der OOP? Wie soll ich OOP benutzen? Das habe ich nicht so ganz verstanden, sorry.

  • Zitat von &quot;webmaster3000&quot;

    zu OOP: Vielleicht kannst du eine Session-Klasse anlegen, die alle Daten (z. B. den Anmeldenamen) verwaltet?


    z. B.

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">class </span><span class="syntaxdefault">mySession</span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">public </span><span class="syntaxkeyword">function </span><span class="syntaxdefault">login</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$username</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$passwd</span><span class="syntaxkeyword">){<br />}<br /><br /></span><span class="syntaxdefault">public </span><span class="syntaxkeyword">function </span><span class="syntaxdefault">logout</span><span class="syntaxkeyword">(){<br />}<br /><br /></span><span class="syntaxdefault">private $username</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">private $passwd</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">private $loginTime</span><span class="syntaxkeyword">;<br />} </span><span class="syntaxdefault"></span>
  • Also, nur zum Verständnis:
    Wenn das Formular abgeschickt wurde, habe ich ja drei Inputfelder: Nickname, Passwort und Bestätigung. Wenn Bestätigung gesetzt ist, dann übergebe ich
    der Methode login() einfach den Nicknamen und das Passwort.


    Falls das soweit richtig ist, dann hier meine erste Frage: Soll ich schon hier das Passwort verschlüsseln?


    Dann überprüfe ich ihn der Methode alles mit MySQL, dies, das Ananas...



    Ist das richtig? Oder wie lautet dein Vorschlag? Vorher hatte ich beide "Systeme" voneinander getrennt. Es gibt eine login.php und eine logout.php...

  • gefällt mir nicht. besonders weil der typ alte standarts á la <b> etc. verwendet und man daher schlussfolgern könnte, dass er nicht gerade so ahnung hat.
    daher habe ich gleich aufgehört zu schauen.


    mein tipp:
    versuche du es selber und dann werden wir im forum das ding auf herz und nieren prüfen

  • Von Tutorials lässt man grundsätzlich die Finger.


    Selber bauen ist die Devise!


    Wenn jeder Entwickler auf der Welt nach einem Tutorial gehen würde, dann brauche ich keine 2 Stunden um das System zu knacken!


    Setz dich hin, überlege was du brauchst, stelle es zusammen und fertig, niemals einfach blind nachbauen, erst recht nicht wenn es um Sicherheit geht!!

  • zu beispiel weiß der jenige typ, der das gemacht hat dann direkt wie er dich hacken muss weil er evtl. mit absicht eine lücke offen gelassen hat. das ist des öfterne die sql-injection die "vergessen" wurde zu verhindern.


    Aber basiii sagte das ja schon teils :D

  • Es war auch nur als tutorial gedacht, das ich von den funktionen sprich vom script was mit nehmen kann um dann selbständig mein code zumachen.
    wollte nie eine 1:1 arbeit hinblättern. irgendwann muss man ja lernen wie man mit login bereiche und registrier ebenen arbeitet. sonst würd ich ja immer auf Stand A bleiben und ich möcht wenn denn auf den Stand G
    ich muss nicht zwingend alles können, hauptsache ich versteh was da abläuft wie es funktioniert ( mit der sicherheit ).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!