• 16.04.2024, 17:14
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

PHP Kennwortabfrage - Fragen!

Freitag, 2. Januar 2004, 01:44

Hallöchen,

heute geht es mir um einen PHP Eingangsbereich -mit Kennwortabfrage-,
der eine ganze Site dahiner schützen soll. Die Database, auf
die die Kennwortabfrage
zurückgreift, soll manuell erstellt werden (aber online). Löschen, Ändern
und erstellen von neuen Account soll möglich sein.
Hat hier jemand von euch etwas Erfahrung? Wenn ja bitte
hier melden oder PN schicken. Könnt euch etwas verdienen.

Gruß Hurri
| AMD2800+ @ 200x12,5 | Radeon 9800Pro | Asus A7N8X Deluxe | 3x 512 3200G2 Corsair |

Re: PHP Kennwortabfrage - Fragen!

Freitag, 2. Januar 2004, 04:23

wie wärs einfach mit htaccess?

Re: PHP Kennwortabfrage - Fragen!

Freitag, 2. Januar 2004, 09:34

bei Deiner Anforderung wäre ein htaccess - Schutz sehr gut geeignet. Es gibt aber auch die Möglichkeit mit PHP die Username - Passwort Kombination direkt in Echtzeit überprüfen zu lassen. Hhierzu gibt es aber auch genug fertige Scripte und Klassen, die man nur anpassen braucht. Such doch mal in Google danach.

dohmian 8)

Re: PHP Kennwortabfrage - Fragen!

Freitag, 2. Januar 2004, 14:17

danke :)

ist dieses htaccess auch so "sicher" wie das php
script?
kann man dieses htaccess auch auf eine seite verlegen,
damit man nicht so ein olles popup hat?

gruß
| AMD2800+ @ 200x12,5 | Radeon 9800Pro | Asus A7N8X Deluxe | 3x 512 3200G2 Corsair |

Re: PHP Kennwortabfrage - Fragen!

Freitag, 2. Januar 2004, 14:30

Die Frage müsste genau umgekehrt sein. Bist du in der Lage ein Script zu schreiben, dass htaccess das Wasser reichen kann? ;D

Wenn du einen wirklich zuverlässigen Schutz willst dann machts du es über htaccess. Wichtig ist natürlich, dass du auch gute Passwörter verwendest. Mit Gross/Kleinschreibung und Sonderzeichen also nicht geizen :)

Zudem könntest in dem geschützten Verzeichnis ein kleines PHP-Script unterbringen womit man die Benutzer verwalten kann. Dazu müsste das Script die Benutzer aus der .htaccess auslesen und z.B. in eine Tabelle umwandeln bei der du z.B. noch Funktionen wie löschen, editieren etc. dranhängen kannst.

Edith sagt: Das geht leider nicht, dass man dieses Popup z.B. in ein Formular integriert.

Re: PHP Kennwortabfrage - Fragen!

Freitag, 2. Januar 2004, 15:18

man kann aber aus php heraus username und passwort im htaccess-file überprüfen:
http://www.pscode.com/vb/scripts/ShowCod…Id=707&lngWId=8

der code kann auch ins file reinschreiben usw.

dann kann man in den geschützten bereich indem man username und passwort in die url schreibt (also von php eine html-seite ausgeben mit einem meta-refresh auf die url):

Quellcode

1
http://user:abghzj@www.geschuetzte-website.de/geschlossen

kann sein das das nicht mit allen browsern funktioniert, sicher ist es auch nicht wenn das passwort im klartext hin und hergeschickt wird.
ich weiss nicht ob es verschlüsselt funktioniert.

man kann aber alternativ auch direkt aus php raus einen eigenen header erzeugen, der das beinhaltet.
frag mich nur nicht, wie genau das geht.

Quellcode

1
header("WWW-Authenticate: Basic realm=\"$username\"")



hier noch eine liste mit fertigen scripts (htaccess oder auch nicht):
http://php.resourceindex.com/Complete_Scripts/User_Management/Password_Protection/
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

mas

Full Member

Re: PHP Kennwortabfrage - Fragen!

Samstag, 3. Januar 2004, 02:31

Also htaccess reicht voellig, aber ein Designer schlaegt die Haende ueber den Kopf zusammen. Mach dir doch eine PHP Klasse, die die Authentifiizierung ueberprueft. Also nachdem der User seine Daten eingeben hat, werden diese geprueft (file/database backend) und halt in server/sitzungs Cookies geschrieben.

Mit einer anderen Funktion ueberpruefst du halt, ob der User Authentifiert ist. Ich wuerde aus Sicherheitsgruenden, dass Passwort und den Usernamen in Session/Server- Cookies speichern und bei jedem Aufruf einer Datei (die ausfuerbaren Code enthaelt) die Authentifierung pruefen, ist zwar nicht ganz so performant, aber dann bist du auf der sicheren Seite.

Du koenntest dann natuerlich eine ganze Benutzerverwaltung einbauen, ich habe vor einiger Zeit primitiv die Unix Rechteverwaltung fuer ein Projekt nachgebaut. Die dafuer entwickelten Klassen verwende ich heute immernoch, sofern ich keine htaccess nutze.

LaNcom

Senior Member

Re: PHP Kennwortabfrage - Fragen!

Samstag, 3. Januar 2004, 07:37

Die Frage sollte nie sein 'Was ist sicher?' (dann wäre die Antwort immer: Nichts!), sondern 'Was ist sicher genug?'...
Das sollte reichen:
Also, Datenbanktabelle für die Benutzer anlegen, Passwörter mit MD5 und etwas salt verschlüsseln, salt in die Konfigurationsdatei, Hash vom Passwort in die Datenbank, fertig. Zum Verifizieren einfach Eingabe vom Passwortfeld mit dem salt hashen und gegen den Eintrag in der Datenbank abgleichen, session_id aus dem Benutzernamen und einer Verwürfelten Microtime basteln und dem Benutzer zuweisen, zusätzlich zusammen mit einem Zeitstempel in einem Log in der Datenbank ablegen, in gesicherten Seiten verifizieren und, wenn der Zeitstempel älter als x Minuten ist, Zugriff verweigern (nicht vergessen, auf jeder Seite den Zeitstempel - microtime reicht - anschubsen)...
"Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music." -- Kristian Wilson, Nintendo, Inc, 1989.

Re: PHP Kennwortabfrage - Fragen!

Samstag, 3. Januar 2004, 12:25

was ist das gena
MD5 und salt verschlüsseln
wie geht das ???
P.S.
eigentlich könnten ja mal die Weinachtssmilies-so schön sie auch sind- mal wieder weg :-X
CoALa CuBe is comming soon Status:50 Prozent Bis jetzt investierte Zeit:200+ Stunden ... Selfmade CaseCon

Re: PHP Kennwortabfrage - Fragen!

Sonntag, 4. Januar 2004, 01:52

md5 ist ein algorytmus!
hast du nen apache server?
dann kannst du mit dem programm /bin/htpasswd.exe eine passwort-datei erstellen, wo das passwort mit md5 verschlüsselt ist

LaNcom

Senior Member

Re: PHP Kennwortabfrage - Fragen!

Sonntag, 4. Januar 2004, 12:54

MD5 kannst Du auch direkt von PHP aus nutzen:
Mein Beispiel, etwas simpler:

           if (md5 ($_POST[enterPass]) == $configPass)
           {
                 $sessionID = microtime();
                 $timeStamp = time();
                 dbConnect($dbConnect);
                 mysql_query("INSERT INTO xxx (time,id) VALUES (\"$timeStamp\",\"$sessionID\")");
"Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music." -- Kristian Wilson, Nintendo, Inc, 1989.

Re: PHP Kennwortabfrage - Fragen!

Sonntag, 4. Januar 2004, 16:55

um das passwort nicht und nicht im klartext lokal ablegen zu müssen, kann man es md5-verschlüsselt in der db ablegen, z.b. als attribut-feld in der user-tabelle (die id, name, email, usw.) enthält. dann lässt sich das ganz einfach überprüfen:

----->8--
$sql = sprintf(
"SELECT id FROM %s WHERE (username = '%s') AND (password = MD5('%s'))",
$tablename,
addslashes(trim($_POST['username'])),
addslashes(trim($_POST['password']))
);
----->8--

erläuterung: in der variablen $sql wird der fertige sql-query gespeichert. die methode sprintf() ersetzt dabei %s durch strings, die als zusätzliche argumente für sprintf() in der reihenfolge angegeben werden müssen, wie sie im "rohen" query-string auftauchen.
mit trim() wird whitespace (leerzeichen, tabs, ...) vor und nach dem string entfernt; mit addslahes() werden ' und " mit einem backslash davor maskiert - andernfalls gibts im ungefährlichsten fall einen sql-fehler aufgrund eines fehlerhaften queries (wenn der user ' oder " mitbenutzt). im schlimmsten fall lassen sich mittels sql-injection weitere sql-kommandos oder konditionen anhängen.

der fertige query-string $sql wird dann ausgeführt:

----->8--
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$entries = $row['0'];
----->8--

$entries enhält die zahl der passenden einträge, die in der tabelle gefunden wurden. im idealfall darf das entweder 0 oder 1 sein, aber es sollte nicht schlimm sein, so zu testen:
if ($entries > 0) { ... } else { ... }

bei weiteren fragen führe ich das noch näher aus...