AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Eigenes Loginscript

Ein Thema von BullsEye · begonnen am 24. Sep 2008 · letzter Beitrag vom 24. Sep 2008
Antwort Antwort
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#1

[PHP] Eigenes Loginscript

  Alt 24. Sep 2008, 17:24
Hallo Leute,

ich habe ein "Loginscript" geschrieben. Es ist zwar ganz einfach aber im Grund reicht es für meine Zwecke!
Allerdings habe ich noch ein Problem, das ich hier beschreibe. Vorab, ich möchte KEIN MySql o.ä. verwenden.

Das Login Formular:

Delphi-Quellcode:

<form action="" method="post">
<p align="center">
<table border="7">
<tr><td>
   <table width="50%" border="0">
   <tr>
      <td colspan="2"> <p align="center">[b]<u> L O G I N </u>[/b]</p></td>
   </tr>
   
   <tr>
      <td> [b] Benutzername [/b] </td>
      <td> <input type="text" name="user"> </td>
   </tr>

   <tr>
      <td> [b] Passwort [/b] </td>
      <td> <input type="password" name="pw">    </td>
   </tr>

   <tr>
      <td> </td>
      <td>
         <input type="submit" value="Login"  >
         <input type="reset" value="Löschen">
      </td>
   </tr>
   </table>
</tr></td>
</table>
</form>
Folgender Code wird für die Login Funktion verwendet.

Delphi-Quellcode:
<?php
      $username = 'BENUTZER';
      $passwort = 'PASSWORT';
   
IF($_POST)
{
   IF ($_POST['user']== $username)
   {   
      IF ($_POST['pw']== $passwort)
      {
      echo
      ('
      <h1><p align="center">
      Login erfolgreich!
      </p></h1>


      


      <p align="center">
      [url="?id=1"] Weiter [/url]
      </p>
      <!----
      


      <iframe src="http://m-v-g.de.ms" width="100%" height="100%"> </iframe>
      --->
      ');
      }

   }
   ELSE
   {
      echo
      ('
      <h1><p align="center">
      Login fehlgeschlagen!
      </p></h1>
      ');
   }

}
?>

Das Prinzip ist sehr einfach:

Ich habe eine auf PHP basierende Seite (Administration). Wird diese Aufgerufen, erscheint automatisch die Indexdatei
mit dem Loginformular.
Geb ich nun meinen Nutzernamen und das Passwort ein, erfolgt die Ausgabe einer Nachricht "Login erfolgreich!"
sowie die Ausgabe eines Links. Der Link leitet mich dann auf den Inhalt weiter. Ist der Nutzername schon falsch,
wird erst gar nicht das Passwort überprüft sondern gleich die Nachricht "Login fehlgeschlagen" ausgegeben.
Soweit so gut, ist zwar nicht das effizienteste Script aber der Grundaufbau funktioniert damit!
Nun zum eigentlichen Problem:
Ich verwenden für die Anzeige des Inhalts ein Array, in dem ich die Links speichere:


Delphi-Quellcode:
<?php
   $seite[0]= 'inhalt/login';
   $seite[1]= 'inhalt/start';
   $seite[2]= 'inhalt/chat_admin';   
?>

   <?php include($seite[$_GET['id']].'.php'); ?>
Der Link um auf die Seite zu kommen (Den ich beim Login erhalte) lautet:

[url="?id=1"] Weiter [/url] Sprich es wird die ID auf 1 gesetzt. Somit wird der Inhalt ausgetauscht (Header und Navi natürlich auch, ist nun aber
nicht weiter von nöten zu erklären).
An sich ist das ganze auch recht sicher, vergleich mit der einfachheit.
Ich will aber nicht, das jdn den "Trick durschaut" und einfach mal auf gut Glück in der Navileiste den Teil
index.php?id=1 durch index.php?id=2 austauscht und somit das Loginmenü umgeht.
Eine Idee von mir ist bsp: ich generiere einfach Zufalls ID's. Das Problem dabei ist, woher weiß ich denn, welche
Seite welche ID hat?
Oder gibts da noch andere Möglichkeiten es so zu machen?

Danke für die Hilfe und Gruß Marc
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: [PHP] Eigenes Loginscript

  Alt 24. Sep 2008, 17:33
Hi!

Also dein Ansatz ist leider völlig falsch! So wird das nichts. Das nennt man Security by Obscurity und sollte tunlichst vermieden werden. Besonders in so einer einfachen Form wie hier.

Richtig geht es so: Nachdem du die Daten in POST auf Richtigkeit geprüft hast, musst du dem User eine Session geben. Dafür hat PHP schon fertige Funktionen, die sogar echt einfach zu verwalten sind. Als erstes musst du ganz (!) am Anfang jeder Datei, noch bevor jeder (!) Ausgabe die Funktion session_start(); aufrufen. Wenn die Login-Daten dann richtig sind, kannst du in die globale Array-Variable $_SESSION dann z.B. einen Wert "true" reinschreiben, auf den du dann immer überprüfst. Beim Logout dann einfach ein false rein. Kurzes, ungetestetes Beispiel:

Code:
session_start();
if ($_POST['name'] == $name && $_POST['password'] == $password) { // Warum denn 2 Abfragen?
  $_SESSION['login'] = true;
} else {
  // Fehlermeldung ausgeben
}

// [...]

if ($_SESSION['login']) {
  // geheime Inhalte anzeigen
} else {
  // "Sie sind nicht berechtigt" ...
}
Edit:// Vielleicht noch ein paar Worte zu den Sessions. Die Daten, welche du in $_SESSION speicherst bleiben erhalten, solange der User eingeloggt ist und sind bei jedem Script-Aufruf wieder verfügbar. Der User bekommt von PHP einen Cookie mit einem 32 Zeichen langen Zufalls-String. Dieser wird vom Browser bei jedem Seitenaufruf an den Server geschickt. Der Server sucht in seiner Session Datenbank nach diesem Zufalls-String (die Session-ID). Hat er was gefunden, läd er die Daten in die $_SESSION-Variable und führt das Script aus. Wichtig zu erwähnen ist es dann wohl, dass all diese Daten Server-gespeichert sind. Das heißt, es ist Problemlos möglich, statt einem "true" auch eine ID möglich, die den gerade eingeloggten User identifiziert. Der User kann diese Daten weder sehen noch ändern.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#3

Re: [PHP] Eigenes Loginscript

  Alt 24. Sep 2008, 21:15
Zitat von Valle:
Also dein Ansatz ist leider völlig falsch! So wird das nichts. Das nennt man Security by Obscurity und sollte tunlichst vermieden werden. Besonders in so einer einfachen Form wie hier.
hm?
Ich bin gerade dabei, mir PHP beizubringen, ohne Hilfe von Lehrern etc... wenn du verstehst wie ich meine. So die Grundlagen etc hab ich schonmal drinne.
Allerdings habe ich noch nie was von diesem "Session" in dieser Form bzw in PHP gesehen!

Zitat von Valle:
Richtig geht es so: Nachdem du die Daten in POST auf Richtigkeit geprüft hast, musst du dem User eine Session geben. Dafür hat PHP schon fertige Funktionen, die sogar echt einfach zu verwalten sind. Als erstes musst du ganz (!) am Anfang jeder Datei, noch bevor jeder (!) Ausgabe die Funktion session_start(); aufrufen. Wenn die Login-Daten dann richtig sind, kannst du in die globale Array-Variable $_SESSION dann z.B. einen Wert "true" reinschreiben, auf den du dann immer überprüfst. Beim Logout dann einfach ein false rein. Kurzes, ungetestetes Beispiel:
Wie schon gesagt habe ich vorher noch nie was von gehört. Allerdings hat diese Funktion nun meine Neugier geweckt! So wie das aussieht könnte das ganz nützlich und vor allem Interessant sein. Ich werde mal versuchen, mein Script danach umzuschreiben!

Zitat von WIKIPEDIA:
Ein System sollte sich niemals allein auf security through obscurity verlassen, aber es kann sinnvoll sein, dadurch die Schwelle für potentielle Angreifer anzuheben.
Das hätte mir ja schon gereicht. Ganz so wichtig sind die Daten auch nicht.
Ich will es mal genauer erklären:
Ich habe für z.B. den Chat auf meiner Seite ne Adminstration und auch eine Adminisrtation für den Downloadzähler etc.. diese sind ansich schon Passwortgeschützt. Nur damit ich mich nicht jedes mal überall durch mein Webspace 'schummeln' muss, um dorthin zu gelangen weil ich was ändern möchte, möchte ich das alles quasi zusammenfassen. Zudem hat es noch den Vorteil, das es übersichtlicher ist


Zitat von Valle:
Edit:// Vielleicht noch ein paar Worte zu den Sessions. [..]
Danke für die Erklärung!
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: [PHP] Eigenes Loginscript

  Alt 24. Sep 2008, 22:04
Hi BullsEye!

Zitat von BullsEye:
Das hätte mir ja schon gereicht. Ganz so wichtig sind die Daten auch nicht.
Ich will es mal genauer erklären:
Ich habe für z.B. den Chat auf meiner Seite ne Adminstration und auch eine Adminisrtation für den Downloadzähler etc.. diese sind ansich schon Passwortgeschützt. Nur damit ich mich nicht jedes mal überall durch mein Webspace 'schummeln' muss, um dorthin zu gelangen weil ich was ändern möchte, möchte ich das alles quasi zusammenfassen. Zudem hat es noch den Vorteil, das es übersichtlicher ist
Das sagst du so einfach. Was bringt dir jeden Passwortschutz, wenn eine einfache Ersetzung von 1 und 2 in der URL alles zunichte macht? Das schafft keinen guten Eindruck. Und glaub mir, es ist nicht schwer mit den Sessions. Also dann doch lieber sicher machen.

Zitat von BullsEye:
Danke für die Erklärung!
Bitteschön. Wenn du noch mehr Hilfe brauchst, dann bietet die PHP-Homepage eine sehr gute Dokumentation. Sowohl mit Funktions-Referenz als auch mit Erklärungen von diversen Features, zum Beispiel Sessions. Ansonsten, melde dich nochmal.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz