Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Passwortschutz in PHP

Empfohlene Antworten

Veröffentlicht

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?

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

Willst du dafür eine Datenbank benutzen oder soll das Passwort in einer Textdatei stehen?

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.

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.

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 !

Muss es denn unbeding PHP sein. Wie wäre es denn mit htaccess?? Soweit ich weiß die sicherste Methode.

naja, HTACcess geht auch , aber schöner als das Browser-Auth-Window ist doch ein Loginformular ;)

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?

Richtig. Mehr als nur eine Alternative. Wobei es mal interessant ist zu wissen (jetzt auf htaccess bezogen).

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

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.

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:(

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....

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 ?

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?

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)

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?

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

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

Originally posted by jake84

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

Nein, sowas wird auch nicht benötigt.

Für dich und die "Dozentin".

12.9. Wie kann ich Passwörter sicher speichern?

http://www.dclp-faq.de/q/q-safe-password.html

Gruß Jaraz

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.