Community

9dots.de Webdesign Board

 

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 

 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 


Login-Script (sehr einfach)
Gehe zu Seite 1, 2  Weiter
 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    9dots.de Webdesign Community Foren-Übersicht -> Coding-Tutorials
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Yada
Mitglied
Mitglied


Angemeldet: 08.06.2004
Beiträge: 267

Interessen: zuviel

BeitragVerfasst am: 17.06.2005, 12:50    Titel: Login-Script (sehr einfach) Antworten mit Zitat
Hi,

da ich gerade die beiden letzten Tests des Jahres hinter mir habe, und diese erfolgreich bestanden habe, gibts aus Freude nen Tutorial Auf den Arm nehmen...

1. SQL Struktur
Code:
CREATE TABLE `user` (
`id` INT( 15 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 60 ) NOT NULL ,
`password` VARCHAR( 60 ) NOT NULL ,
PRIMARY KEY ( `id` )
);


2. login.php
Code:
<?php
 session_start(); // Die Session wird gestartet
 ob_start();
 include('auth.php');
 
 echo "<form action='".$_SERVER['PHP_SELF']."' method='POST'>";
 echo "<input type='Text' name='log_nick'><br>"; // log feld für nick
 echo "<input type='Password' name='log_pass'><br>"; // log feld für pw
 echo "<input type='Submit' value=' einloggen '>";
 echo "</form>";
?>


3. auth.php
Code:
<?php
 if(isset($_POST['log_nick']) && isset($_POST['log_pass'])) { // sollten log_nick und pass gegeben sein
    $result = mysql_query("SELECT id,name,password FROM `user` WHERE `name` = '".$_POST['log_nick']."'"); // wird id, name und passwort aus der user tabelle geholt, wo der name der eingegebene log_nick ist
   $row = mysql_fetch_array($result); // row dient der wiedergabe fürs resultat
   
   if($_POST['password'] != $row['password']) { // sollte das passwort falsch sein ..
      echo "Es ist ein Fehler aufgetretten!"; // <--
   } else { // Andernfalls wird die session gesetzt!
      $_SESSION['id'] = $row['id'];
      $_SESSION['password'] = $row['pw'];
   }
 }
?>


4. logout.php

Code:
<?php
 session_start(); // Die Session wird gestartet
 ob_start();
 include('auth.php');
 
 if(!isset($_SESSION['id']) && !isset($_SESSION['pw'])) { // sollte man gar net erst eingeloggt sein!...
    echo "Du kannst dich nicht ausloggen, da du nicht eingeloggt bist!"; // <--
 } else {
    unset($_SESSION['id']); // session_id wird "entfernt"
   unset($_SESSION['pw']); // session_pw wird "entfernt"
   session_destroy(); // session wird "zerstört"
   echo "Erfolgreich ausgeloggt!";
 }
?>


5. site.php

Code:
<?php
 session_start(); // Die Session wird gestartet
 ob_start();
 include('auth.php');
 
 if(!isset($_SESSION['id']) && !isset($_SESSION['pw'])) { // wenn man nit eingeloggt ist ...
    echo "access denied"; // <--
 } else {
    echo "<a href='logout.php'> weg mit mir ! </a><br><br>";
    echo "Hallo, du bist eingeloggt ... das script hat Yada geschrieben, bedanke Dich bei ihm das du das hier siehst :P"; // ^^
 }
?>


---

Noch nicht getestet! Smilie
Eben aus Spaß im Dreamweaver geschrieben ^^ ...

Kurze Erklärung:

login.php: Die Datei die benötigt wird um sich einzuloggen.

auth.php: Die Datei die einen einloggt

logout.php: Die Datei die einen ausloggt

site.php: Erst wenn man eingeloggt ist, kann man diese Seite sehen!

HF, Yada Sehr glücklich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
flexx
Mitglied
Mitglied


Angemeldet: 19.02.2005
Beiträge: 54


BeitragVerfasst am: 17.06.2005, 12:53    Titel: Antworten mit Zitat
edit sry nur den anfang gelesen. Smilie sorry ^^

Zuletzt bearbeitet von flexx am 17.06.2005, 13:44, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Yada
Mitglied
Mitglied


Angemeldet: 08.06.2004
Beiträge: 267

Interessen: zuviel

BeitragVerfasst am: 17.06.2005, 13:11    Titel: Antworten mit Zitat
Code durchgehen ... Thx @ Kommentare // Winken

e/ zuerst denken, dann lesen, dann posten ^^


Zuletzt bearbeitet von Yada am 17.06.2005, 13:56, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
unex`9dots
Administrator
Administrator


Angemeldet: 02.08.2003
Beiträge: 1106
Wohnort: Karlsruhe
Interessen: Coding, Segeln, Schwimmen, PC

BeitragVerfasst am: 17.06.2005, 13:30    Titel: Antworten mit Zitat
sieht ganz brauchbar aus, sehr schön!

vor dem löschen der session mit session_destroy() würde ich empfehlen die variablen nicht einzeln mit unset() zu löschen, sondern mit unset($_SESSION); einfach ALLE session variablen zu löschen, das sit generell etwas sauberer.

Für alle die an dieser Stellt etwas mehr über Logins lesen wollen nochmal der hinweis auf einen anderen thread http://forum.9dots.de/viewtopic.php?t=409
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Yada
Mitglied
Mitglied


Angemeldet: 08.06.2004
Beiträge: 267

Interessen: zuviel

BeitragVerfasst am: 17.06.2005, 13:55    Titel: Antworten mit Zitat
So, wusst ich gar nich, ich lösch die immer einzeln Smilie

Danke! Smilie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Thomas`tiweb
Mitglied
Mitglied


Angemeldet: 03.08.2004
Beiträge: 115
Wohnort: Bruchsal

BeitragVerfasst am: 18.06.2005, 02:34    Titel: Antworten mit Zitat
Ich als Noob komm hier auch mal daher und stell die ganz einfache Frage: Wieso die Session Vars bzw. das Session Array loeschen?

Mit session_destroy() verabschiedet sich das doch sowieso oder ?


Gibts hier eigentlich schon nen Tut wo der Session Save Handler beschrieben ist? Vielleicht setzt ich mich mal da dran Auf den Arm nehmen
Ist nuetzlich die Sessions z.b. in der DB zu haben.

Edit:
Thomas`tiweb hat folgendes geschrieben:

Mit session_destroy() verabschiedet sich das doch sowieso oder ?


Ehh, nein - es wird doch nicht geloescht. Habe ich irrtuemlicherweise angenommen, weil ich immer meine eigenen Save Handlers benutze, da passiert sowas erst garnicht Auf den Arm nehmen


Test:
Code:

<?
session_start();

$_SESSION['bla'] = "moep";
print($_SESSION['bla']);
//Erst durch den unset wirds geloescht
//unset($_SESSION);
session_destroy();
print($_SESSION['bla']);

//Gibt "moepmoep" aus
?>


Edit 2:
Zu dem Login: Umbedingt immer die IP des Remote PCs als Session Variable speichern und sie beim Einloggen abfragen -> falls keine Uebereinstimmung Session loeschen.
So wird verhindert, dass sich User durch Weitergabe der Session-ID als andere Accounts anmelden koennen (es gibt genuegend Leute die Session-IDs in Links mitposten).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
unex`9dots
Administrator
Administrator


Angemeldet: 02.08.2003
Beiträge: 1106
Wohnort: Karlsruhe
Interessen: Coding, Segeln, Schwimmen, PC

BeitragVerfasst am: 18.06.2005, 03:23    Titel: Antworten mit Zitat
das mit dem überprüfen der IP hat einen großen Haken. Es funktioniert nämlich nicht immer wie gewünscht. AOL-User z.B. kriegen andauernd eine neue IP zugewiesen, warum genau weiss ich nicht... in vielen Firmen selbiges.... muss irgendwie mit den proxys zusammenhaengen ueber die die laufen.
Die Kontrolle der IP ist also eher eine schlechte idee. Meines wissens kann man höchstens die ersten 6 stellen der ip benutzen bzw. bis zum 2ten Punkt eben.

Alternativ kann man eben noch den Browser als Sicherheitskriterium hinzunehmen, wobei da eben durch die weite Verbreitung des IE kaum ein merkbarer Effekt rauskommen wird.

Wie Thomas schon sagt ist der session_set_save_handler() eine sehr empfehlenswerte funktion, mehr dazu findet ihr in dem Thread den ich in meinem letzten Post angegeben habe.
Wenn ich in den nächsten Tagen mal Zeit habe werde ich vielleicht mal eine fertige Klasse mit ins Forum stellen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Yada
Mitglied
Mitglied


Angemeldet: 08.06.2004
Beiträge: 267

Interessen: zuviel

BeitragVerfasst am: 18.06.2005, 07:33    Titel: Antworten mit Zitat
Ja, unex hat recht mit mit seiner IP-These.

Es bringt sich nicht sehr viel, da einige User immer neue IP`s kriegen...

Man könnte es schon machen, nur das posten der SESSID in ner URL kann der Admin nicht verantworten...

regards, me
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
unex`9dots
Administrator
Administrator


Angemeldet: 02.08.2003
Beiträge: 1106
Wohnort: Karlsruhe
Interessen: Coding, Segeln, Schwimmen, PC

BeitragVerfasst am: 18.06.2005, 08:13    Titel: Antworten mit Zitat
yada: entweder du verantwortest das poster der session id oder du sperrst lle aus, die keine cookies aktiviert haben. Ob du das willst hängt dann wohl von dir und der Seite die du baust ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Yada
Mitglied
Mitglied


Angemeldet: 08.06.2004
Beiträge: 267

Interessen: zuviel

BeitragVerfasst am: 18.06.2005, 13:05    Titel: Antworten mit Zitat
Dann schreib ich nen Verweis man solls nich tun, reicht doch auch, oder? Smilie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Thomas`tiweb
Mitglied
Mitglied


Angemeldet: 03.08.2004
Beiträge: 115
Wohnort: Bruchsal

BeitragVerfasst am: 18.06.2005, 13:20    Titel: Antworten mit Zitat
also wir fragen die ip immer ab und ich habe noch keine negativen laute bekommen (von wegen ich kann mich nicht einloggen). wenn user damit probleme haben muessen sie halt cookies aktivieren (und der login laeuft dann halt immer ueber cookies, es wird also bei jedem seitenaufruf ne neue session generiert).

ich sperre lieber 5 user aus als 20000 user zu sagen, dass sie lieber nicht die session-id mitposten sollen (und das geschieht manchmal schnell).
bei normalen usern ist das eigentlich kein problem, aber was ist mit den admins?

es ist definitiv ne riesen sicherheitsluecke!


btw: stimmt das mit den ips bei aol? das kann ich mir schwer vorstellen ... wie soll man sonst egal was ueber tcp/ip machen? das wuerde nur gehen wenn man keinen dauernden zugriff auf die ressource hat (z.b. websites aufrufen) jedoch nie bei anderen sachen (ftp, spiele, ssh, etc.).

btw2: ich wuerde mal behaupten, dass nur 5% aller user wissen, was eine sessionid ist und was sie anrichten kann. es gab einen fall, da hat jemand eine sessionid von der wow registrierung ins forum gepostet - ist echt nichts feines! was soll man dem user sagen? selber schuld ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
unex`9dots
Administrator
Administrator


Angemeldet: 02.08.2003
Beiträge: 1106
Wohnort: Karlsruhe
Interessen: Coding, Segeln, Schwimmen, PC

BeitragVerfasst am: 18.06.2005, 13:44    Titel: Antworten mit Zitat
richtig das mit den Sessions sind ohne cookie definitiv sehr sehr sehr unsicher... mit cookies wird es deutlich besser, auch wenn es da natuerlich auch mittel und wege gibt es zu umgehen.

Zu dem Thema kann ich euch folgendes empfehlen:
http://www.sans.org/rr/whitepapers/webservers/1594.php

auf seiten 13/14(je nach Zählung der seiten Winken) 2ter Absatz von unten behandelt die Sache mit den IPs auf die ich mich beziehe. Kann natuerlich schon sein das es nichtmehr 100% aktuell ist...
wobei 10.Januar 2005 schon relativ aktuell klingt Smilie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DMC
Mitglied
Mitglied


Angemeldet: 05.06.2004
Beiträge: 180


BeitragVerfasst am: 19.06.2005, 17:20    Titel: Antworten mit Zitat
ich habe sunrise (CH) adsl, da wird einem nach jedem verbinden ins internet, eine neue ip zugewiesen. zudem kann man bei sunrise eine ip nicht länger als 24 stunden haben, da nach 24 stunden die verbindung automatisch getrennt wird.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xaan
Mitglied
Mitglied


Angemeldet: 19.04.2005
Beiträge: 370
Wohnort: Bayern
Interessen: C#, C++, PHP, Security

BeitragVerfasst am: 19.06.2005, 20:18    Titel: Antworten mit Zitat
das haben standart breitband verbindungen so ansich...
anderfalls kostet sowas seh viel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name
Thomas`tiweb
Mitglied
Mitglied


Angemeldet: 03.08.2004
Beiträge: 115
Wohnort: Bruchsal

BeitragVerfasst am: 19.06.2005, 21:48    Titel: Antworten mit Zitat
das dokument ist sehr schoen @unex, aber da steht auch, dass man es wirklich ueberpruefen sollte Winken

wie gesagt, meist laeuft alles noch ueber einen cookie login (also ich meine jetzt nicht den session cookie) und deswegen passt das meist alles (auch mit der ueberpruefung)

falls man nur die (wie im dokument steht) ersten 10 bits ueberprueft (da die bei aol anscheinend immer gleich ist), kann ein angreifer mit derselben sessionid es gleich nochmal probieren (mit einer x-beliebigen aol ip) - und es wuerde funktionieren.

die anderen sicherheitssachen, wie z.b. eine random-id (somit nicht vorhersehbar - bitte nicht time() fuer random-werte benutzen Winken ), genug zeichen, loeschen nach x minuten inaktivsein, etc... sind bei den meisten php skripten schon standard (es wird zumindest in 50% aller tuts erwaehnt).

@DMC: Es ging nicht um die dynamische IP Zuweisung nach einem reconnect bzw. der 24h Zwangstrennung (womit auch eine neue ip generiert wird).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    9dots.de Webdesign Community Foren-Übersicht -> Coding-Tutorials Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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.

Board Software by phpBB © 2001, 2005 phpBB Group. Impressum
Dominik Wuttke - Moritz Münchmeyer - Joachim Nagel GbR.
AGB