Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: $_Session in einem Login - Scirpt richtig verwendet?

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.01.2006
    Beiträge
    37

    $_Session in einem Login - Scirpt richtig verwendet?

    HAllo Forum,

    ich habe mir ein Login - Script geschrieben.

    Dieses leitet bei erfolgreicher Anmeldung auf ein main.php um; hier wird eine session_start)=; gestartet.

    Wenn man nun auf dieser Seite auf dem Button Ansehen klickt, dann soll auf der dritten Seite kunden.php ebenfalls der Inhalt von $_Session['username'] stehen.

    Aber bei mir will das nicht gehen.
    KAnn mir jemand vielleicht dabei helfen bitte?

    Hier der Code

    login.php

    <html>
    <body>
    <form action="main.php" method="post">

    <h1 align=center><font color="#FF0000">Hinweis</font></h1>
    <h1 align=center><font color="#FF0000">Es muss Username und Password eingegeben werden</font></h1>



    <table border="0" cellpadding="0" cellspacing="4" bgcolor="aqua" align="center">
    <tr>
    <td align="right">Username</td>
    <td><input type="text"name="Username" size="30" maxlength="30"></td>
    </tr>
    <tr>
    <td align="right">Password</td>
    <td><input type="Password" name="Password" size="30" maxlength="30"></td>
    </tr>
    </table>

    <p align="center"><input type="submit" value="Anmelden" /></p>

    <p align=center><font color="#FF0000">Es werden aus Sicherheitsgr&uuml;nden Ihr Account, Ihre IP - Adresse und die Uhrzeit mitgeloggt.</font></h1>

    </form>

    </body>
    </html>

    main.php

    <?php
    session_start();
    ?>
    <html>
    <body>
    <form action="kunden.php" method="POST">
    <?php

    $user = $_POST['Username'];
    $pass = $_POST['Password'];

    $_Session['username'] = $user;
    $_Session['password'] = $pass;


    if(!empty($_Session['username']) && (!empty($_Session['password']))) {

    $ip = getenv('REMOTE_ADDR');

    print "<p align='center'><font color='red'>Ihre IP - Adresse ist $ip</p></font>";
    print "<p align='center'><font color='red'>Ihre Daten wurden mitgeloggt</p></font>";

    $line=strftime('%c');
    print "<p align='center'><font color='red'>$line</p></font>";

    print '<hr>';
    print '<a href="http://localhost/kundendatenaendern.php">Kundendaten &auml;ndern</a>'."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".'<a href="http://localhost/cases.php">Cases</a>'."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".'<a href="http://localhost/email.php">Email</a>';
    print '<hr>';

    $db = "intern";
    $link = @mysql_connect ("localhost", $user, $pass);
    if(! $link)
    {
    die ("Cannot connect to Database: ".mysql_error());
    }
    @mysql_select_db($db, $link) or die("Cannot open Database: ".mysql_error());
    $sql = 'Select * from intern';
    $result = mysql_query($sql);
    print '<table border="1">'."\n";
    while($row = mysql_fetch_row($result))
    {
    print '<tr>' . "\n";
    foreach($row as $field) {
    print "<td>$field</td>";
    }
    print "</tr>\n";}
    print "</table>\n";
    print '<h3><font color="blue">Welchen Datensatz wollen Sie sich komplett ansehen? (Eingabe der ID)</h3></font>';
    print '<input name="ansehen" type="text" />';
    print '<input type="submit" type="hidden" value="ANSEHEN">';
    } else
    {
    print '<p align="center">Sie sind nicht korrekt angemeldet</p>';
    print '<p align="center"><a href="http://localhost/login.php>LOGIN - SEITE"</p>';}
    ?>
    </body>
    </html>

    und die kunden.php

    <?php
    session_start();?>
    <html>
    <body>
    <?php
    $ansehen = $_POST['ansehen'];
    print "$ansehen";
    $user = $_Session['username'];
    print "$user";
    ?>
    </body>
    </html>

    Danke im vorhinein.

    Mfg
    Byron

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    bitte tu uns und dir einen gefallen und tu solche dinger in die code tags
    (code)(/code) (in eckigen klammern)

    greetz

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.03.2006
    Beiträge
    6
    Also, da scheint einiges falsch zu laufen...

    Sehe zum Beispiel nicht, wo Du die Überprüfung des Users und Passwortes durchführst. So kann sich ja jeder mit einem nicht leeren User und Passwort anmelden...
    Die Überprüfung muss vor session_start() erfolgen.

    In main.php solltest Du dann ein session_register("user") durchführen, damit der User zur Session gespeichert wird... Dann solltest Du die Variable $user auch in den Folgeseiten ansprechen können...
    Eine Session-ID ansich ist ja nur eine zufälliger, eindeutiger String...

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.12.2002
    Ort
    Darmstadt
    Beiträge
    615
    Muss $_SESSION nicht komplett großgeschrieben werden?

    @philneu: session_register() Funktionen sollte man nur benutzen wenn register_globals auf on ist, was man natürlich nicht machen sollte, ansonsten sollte man die Zugriffe über $_SESSION machen.
    Seine Rätselhaftigkeit wird nur durch seine Macht übertroffen!

  5. #5
    Registrierter Benutzer
    Registriert seit
    03.03.2006
    Beiträge
    6
    ja, mit reg_globals hin und her... Ich benutze es immer noch, weil ich die Lücken kenne und meine, mich richtig abgesichert zu haben. Und der ganze $POST und $GET-Kram bläht den Code so auf.

    Ich benutze nicht die Session-Verwaltung von PHP, da sie mir zu unflexibel ist... Habe mir ein Authorisierungssystem mit eigener Sessionverwaltung und hohen Sicherheitsstandards geschrieben...

    Ist ja an und für sich trivial

  6. #6
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Zitat Zitat von philneu
    ja, mit reg_globals hin und her... Ich benutze es immer noch, weil ich die Lücken kenne und meine, mich richtig abgesichert zu haben. Und der ganze $POST und $GET-Kram bläht den Code so auf.

    Ich benutze nicht die Session-Verwaltung von PHP, da sie mir zu unflexibel ist... Habe mir ein Authorisierungssystem mit eigener Sessionverwaltung und hohen Sicherheitsstandards geschrieben...

    Ist ja an und für sich trivial
    Sorry... aber diese Einstellung finde ich bescheuert!
    Warum das Rad neu erfinden, wenn etwas bereits millionenfach getestet ist und funktioniert. Die Session Verwaltung von PHP ist meiner meinung nach flexibel genug (möglicherweise hast du dich nicht genug damit beschäftigt)... meine Sessiondaten landen beispielsweise in der Datenbank... und da liegen sie auch sicher geschützt vor neugierigen blicken. Aber vielleicht willst du uns kurz erläutern was du unter "hohen Sicherheitsstandards" verstehst.
    Und $_POST[] und $_GET[] nicht zu verwenden ist grob fahrlässig, auch wenn man sich angeblich den risiken bewusst ist - abgesehen davon, dass deine Skripte nicht bei jedem Hoster laufen.

    Die funktion session_register(); die du oben vorschlägst ist übrigens seit der Einführung von $_SESSION deprecated! http://de2.php.net/session_register

    Gruß,

    Gaert
    Geändert von Gaert (06-03-2006 um 09:29 Uhr)


  7. #7
    Registrierter Benutzer
    Registriert seit
    03.03.2006
    Beiträge
    6
    Zitat Zitat von Gaert
    Aber vielleicht willst du uns kurz erläutern was du unter "hohen Sicherheitsstandards" verstehst.
    Ich benutze zusätzlich zu einer Session-ID noch zwei Cookies, einen festen, der durch eine E-Mail-Bestätigung gesetzt wird, einen für die Sitzung und zusätzliche eine andere Sessid, die in der URL übergeben wird.
    Die IP-Adresse wird auch für die letzteren beiden überprüft.
    Geht vielleicht auch mit der Sessionverwaltung, aber ich halte mein System für integrierter und besser nachvollziehbar für diese Anwendung.

    Zitat Zitat von Gaert
    Und $_POST[] und $_GET[] nicht zu verwenden ist grob fahrlässig, auch wenn man sich angeblich den risiken bewusst ist - abgesehen davon, dass deine Skripte nicht bei jedem Hoster laufen.
    Sehe ich wie gesagt anders! Bei meinem Stammhoster kann ich das festlegen, wie ich will. Und die Risiken sind bei sauberem Code dann doch sehr eingeschränkt.

  8. #8
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Zitat Zitat von philneu
    Ich benutze zusätzlich zu einer Session-ID noch zwei Cookies, einen festen, der durch eine E-Mail-Bestätigung gesetzt wird, einen für die Sitzung und zusätzliche eine andere Sessid, die in der URL übergeben wird.
    Die IP-Adresse wird auch für die letzteren beiden überprüft.
    Geht vielleicht auch mit der Sessionverwaltung, aber ich halte mein System für integrierter und besser nachvollziehbar für diese Anwendung.
    Hallo phil,

    ehrlich gesagt verstehe ich nicht wieso durch dieses komplizierte verfahren eine erhöhte Sicherheit entstehen soll? Die Grundsätzlichen Sicherheitsprobleme (nach dem Anmeldeverfahren) bleiben erhalten. Das Binding von Sessions an eine IP Adresse ist übrigens überhaupt keine gute Idee weil:
    1. Falsche Sicherheit wenn zwei Personen aus einem durch NAT getrennten Netz auf die selbe Seite zugreifen.
    2. Aufbau einer Session ist bei Proxy Balancing nicht mehr möglich, weil sich zwischen zwei HTTP Requests die Adresse ändert.

    IMHO ist es wichtiger den Inhalt der Session zu schützen und eine laufende Session gegen XSS abzusichern. Meine Meinung: mod_rewrite benutzen um die Session ID in die URL einzubinden (a la http://www.example.com/34ad23e48ad3lqj434a/myscript.php) und die Sessiondaten irgendwo geschützt ablegen wo keiner drankommt.

    Gruß,

    Gaert

    EDIT:
    Zitat Zitat von philneu
    Bei meinem Stammhoster kann ich das festlegen, wie ich will.
    Mal sehen wie lange noch!
    Geändert von Gaert (06-03-2006 um 14:17 Uhr)


  9. #9
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Hallo

    byron mach doch eine session.php datei die du immer als erstet mit include'session.php'; ins script holst.
    In der datei kannst du dan die ganze Session aufbauen.
    und oder den datenbank connegt noch mit reinholen.

    könnte ja so ausehen.
    PHP-Code:
    <?php
    session_start
    ();
    if(!empty(
    $_POST['username'])) $SESSION['username'] = $_POST['username'];
    ?>
    oder so änlich.

  10. #10
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von localhost
    byron mach doch eine session.php datei die du immer als erstet mit include'session.php'; ins script holst.
    Wichtige Dateien immer mit require() und nicht mit include() einbinden!

  11. #11
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Zitat Zitat von BLUESCREEN3D
    Wichtige Dateien immer mit require() und nicht mit include() einbinden!
    Wiso das wuste ihc noch nicht kann mich jemand aufkleren und was hatt was eindlich mit dem inc auf sich wenn wir schon dabei sind.

    also wischtig.inc.php hab ich mal was gelsen oder so weis aber nicht mer genau

  12. #12
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Siehe http://de.php.net/manual/en/function.require.php

    require() bricht das Script ab, falls die Datei fehlt.

  13. #13
    schifti
    Gast
    Zitat Zitat von localhost
    also wischtig.inc.php hab ich mal was gelsen oder so weis aber nicht mer genau
    Die meisten Server sind so konfiguriert, das bei *.inc.* keine Ausgabe erfolgt

  14. #14
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Zitat Zitat von schifti
    Die meisten Server sind so konfiguriert, das bei *.inc.* keine Ausgabe erfolgt
    Aber eben nicht alle... und da liegt die Krux - Includes immer mit .php als Endung!


  15. #15
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    wo stellt man das den ein ??
    In der php.ini habe ich das nicht gefunden

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •