Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

Ich würde gerne auf einer Hompage einen Passwortgeschützten berreich einfügen der durch PHP realisiert werden soll. Das lässt sich relativ leicht mit einer if/else Abfrage realisieren, aber das is nicht sehr Sicher, gibt es da noch was besseres auf PHP basis?

Geschrieben

hallo,

ich würde einen Passwortschutz mit einer Verbindung zu MySql bewältigen.

lass die Leute registrieren und sich einen Nick aussuchen, der in die DB eingetragen wird.

gleichzeitig lasse mit md5 ein Passwort generieren und es auch in die DB eintragen

danach kann sich der User einloggen ...

ob der User authentifiziert ist, fragst du dann per PHP ab

Geschrieben

Was ist md5? Mit mysql wärs wohl am besten. Aber wie frage Ich dann das PW ab aus der DB mit PHP? Das PW soll allerdings eigentlich nur für den Admin sein damit er die vorher schon registrierten Daten in der DB editieren kann.

Geschrieben

md5 ist ein Verschlüsselungsalgorithmus, der sowohl in PHP als auch in mySQL vorhanden ist. Dann steht das Passwort nicht als Klartext in der DB.

Du erstellst dynamisch eine mySQL-Abfrage und quckst, ob der User schon in der DB vorhanden ist und ob das Passwort dazu passt.

Geschrieben

md5 ist eine sehr sichere Art der HashBildung,

Dh. Umkehrung unmöglich, aber ein Vergleichen der Hashwerte ist möglich.


zb:
du hast ein formular mit zwei feldern form_username und form_passwort

PHP:

if($submit){

$form_passwort = md5($form_passwort)

$db->query("select * FROM tabelle WHERE username='$form_username' AND passwort=''$form_passwort'")

}




zum testen vorher ein user mit:
$password = md5("test");
$db->query("INSERT INTO tabelle (passwort, username) VALUES ('$password', 'admin')")
anlegen.
[/php]

P.S. Wer Platz in der Db sparen möchte, der MD5-Hash ist immer 32 Zeichen lang, egal, wie lang das Passwort ist !

Geschrieben

Kann man nicht über Login-Formular die Daten an das Browser-Auth-Window übergeben, so dass der User da nichts mehr eingeben muss? Die Frage hab ich mir noch nie gestellt. Das wird doch irgendwie möglich sein, oder?

Geschrieben

die Server-vars abfragen wüsste ich noch,

//Benutzername

$_SERVER['PHP_AUTH_USER'] == $_SERVER['REMOTE_USER']

//Passwort im Klartext

$_SERVER['PHP_AUTH_PW']

aber umgedreht auch net :

die htaccess-datei ist doch ein sehr guter Schutz

ich denke, dass es so nicht funktioniert, mit php und htaccess

Geschrieben

Warum sollte php nicht darauf zugreifen können? Das sind ganz normale Dateien die man editieren kann, vor allem als Serverseitige Scriptsprache hat man doch die Macht dazu.

Man kann sie ja auch mit php dynamisch am Server erstellen.

Ist doch eine ganz einfache Sache, smart macht man es mit Web-Login und Speicherung in einer Datenbank (oder Textdatei in einem geschützten Bereich), einfach macht man es mit htaccess.

Geschrieben

Also, Ich das jetzt mal versucht umzusetzten hat aber nich hingehauen.

Mein HTML Quellcode is folgender:

<html>

<head>

<title>Login</title>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<link rel="stylesheet" type="text/css" href="../css/neu.css">

</head>

<body bgcolor="blue">

<h1>Bitte geben Sie Passwort und Username ein.</h1>

<form action="login.php" method="post">

Passwort: <input type="text" name="pw"><br>

<br>

Username: <input type="text" name="user"><br>

<br>

<input type="submit" value="Einloggen">

</form>

</body>

</html>

und mein PHP code is:

<?php

if ($submit) {

$pw=md5($pw);

$db="select * from passwort where user='$user' and pw='$pw'";

} else {echo "Leider nicht möglich"};

?>

Was mache Ich falsch? Is vieleicht ne blöde frage, aber Ich komm nich drauf woran es liegt:(

Geschrieben

Mmmhh. Wie ist das denn wenn man dem Submit-Button keinen Namen gibt? Kann man dann nach der Variablen $submit fragen? Ich denke eher nicht. Das ist das, was mir zuerst auffällt.

Desweiteren weist du der Variablen $db ja nur den String zu und machst nichts weiteres damit....

Geschrieben

der von mir gepostete Code ist nur eine Art Schablone, die man einsetzen kann. für den Datenbankzugriff ( Öffnen usw.)

bist du natürlich selbst verantwortlich

warum es bei dir nicht läuft , kann mehrere Gründe haben:

1. wie sieht es mit deinen register_globals aus ?

2. steht die Verbindung zur DB ?

Geschrieben

Wie trage Ich das in die DB als md5 ein?

Die Fehlermeldung ist das er mir ne Weiße Seite anzeigt, ohne irgendwas...

Ziel des ganzen ist es auch nach Erfolgreichem einloggen die Datenbank auf der HTMl Seite Anzeigen zu lassen und zu editieren usw, geht so was überhaupt?

Geschrieben
Originally posted by Problemchild

Wie trage Ich das in die DB als md5 ein?


$password = md5("test");

$db->query("INSERT INTO tabelle (passwort, username) VALUES ('$password', 'admin')")
[/php]

-du musst das pw per md5 umwandeln

- das feld in der db ist ein string-typ

- dort trägst du das umgewandelte pw per php ein ( siehe oben)

Geschrieben

Meine Dozentin meinte grad Ich könnte das auch ohne md5 machen, Hauptsache es wird das PW überprüft und der Username und wenn das richtig ist soll die Tabelle in der html Seite angezeigt werden und editier bar sein.

Wie überprüfe Ich das PW?

Wie zeige Ich den Inhalt der Tabelle an nach erfolgreichem Login?

Geschrieben

hi :-)

gibt es auch eine möglichkeit mit md5 wieder was zurück verschlüsseln?

z.B. aus "test" wird "098f6bcd4621d373cade4e832627b4f6"

jetzt möchte ich aus "098f6bcd4621d373cade4e832627b4f6" wieder test haben :-)

mfg Jake

Geschrieben
Originally posted by jake84

hi :-)

gibt es auch eine möglichkeit mit md5 wieder was zurück verschlüsseln?

wie oben schon geschrieben, geht das Entschlüsseln mit md5 nicht !!!

du kannst nur 2 md5-Hashes vergleichen

Geschrieben

danke @blast und @Jaraz :-) hab gerade was gefunden :-)

$test = "test";

// zum Verschlüsseln

$test = base64_encode($test);

aus test wird: dGVzdA==

// zum entschlüsseln

$test = base64_decode($test);

aus dGVzdA== wird: test

:-) mfg Jake

Geschrieben

Hallo!

Erstens ist das keine Verschlüsselung! Der String wird einfach nur anders codiert. Eine Verschlüsselung/Entschlüsselung setzt immer vorraus, dass du irgendwo einen Key hast, mit dem du etwas verschlüsselst.

Eine einseitige Verschlüsselung dagegen benötigt keinen Key, da man sie nicht Rückgängig machen kann und somit nur mit "Brute Force" angriffen knacken kann.

Wenn du mit base64_encode arbeitest, kannst du die Passwörter auch gleich im Klartext speichern.

Zweitens was willst du denn überhaupt machen?

Gruß Jaraz

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...