Zum Inhalt springen

php und Passwörter


Empfohlene Beiträge

Hallo,

ich habe 2 php Seiten im Netz mit denen man Daten zu einer homepage hinzufügen und löschen kann (sind auch nur zugänglich wenn man weiß wo sie im verzeichniss liegen). Die soll natürlich nicht jedermann nutzen. Wie stelle ich das am besten mit einer passwortabfrage an? Kann ich da im quellcode dass passwort in klartext hineinschreiben oder irgendwie verschlüsseln? POST-übertragung zu unsicher?

htaccess scheidet leider aus.

wie macht ihr das so?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ob es sicher übertragen wird hat mit POST nicht so viel zu tun, ist nur besser, weil es dann nicht wie bei GET in der URL auftaucht.

Wenn du es sicher übertragen willst, nimm https.

Das Passwort kann man verschlüsselt ( md5 )in den Code/die DB schreiben. Die Usereingabe auch verschlüsseln und dann beide vergleichen.

Bei richtigen Passwort kannst du dann eine Session starten, damit der User eingeloggt ist. Bei den beiden PHP Dateien überprüfst du jeweils am Anfang, ob eine Session vorhanden ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wenn du die usereingabe auch verschlüsselst kannst du sie nicht mehr aus der Datenbank ohne weiteres auslesen. Dann kannst du zB nicht mehr nach dem Usernamen sortieren, weil er ja im MD5-Format in der Datenbank steht, ne?

Ich denke es reicht, wenn du das Passwort im MD5-Format in der Datenbank verstauchst (wie mein Vorredner bereits erwähnte).

dann kannst du's abfragen: select username from Tb_users where passwort = md5('$passwort') and username = '$username';

oder so ähnlich. Für MD5 brauchst du varchar mit 32 Zeichen.

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wenn du die usereingabe auch verschlüsselst kannst du sie nicht mehr aus der Datenbank ohne weiteres auslesen. Dann kannst du zB nicht mehr nach dem Usernamen sortieren, weil er ja im MD5-Format in der Datenbank steht, ne?

Ich denke es reicht, wenn du das Passwort im MD5-Format in der Datenbank verstauchst (wie mein Vorredner bereits erwähnte).

dann kannst du's abfragen: select username from Tb_users where passwort = md5('$passwort') and username = '$username';

oder so ähnlich. Für MD5 brauchst du varchar mit 32 Zeichen.

Gruß

Das ist wohl die meist gewählte variante.

So kannst du es recht ordentlich machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und wenn ich einfach sowas mache:

if($_POST["passw"] == "passwort"){.....}
else
{echo "fehler";}
[/PHP]

ist das dann unsicher?

[PHP]

$passwort = "passwort"

...

if ($_POST["passwd"] == $passwort)
...

Als md5-Hash ist es schon sicherer, weil dann keiner das PW lesen kann, auch wenn er Zugirff auf den Server hat.

Der Fall oben (der ja fast deiner ist) ist ansich auch ok, es kann aber schon möglichkeiten geben, in der das PW dann ausgelesen werden kann. Normalerweise geht eine solche Seite ja immer durch den PHP-Interpreter und der gibt den PHP-code nicht aus. Was aber, wenn nach irgendeiner Änderung am Server das nicht mehr wie gewollt funktioniert? Dann wäre es (zumindest für kurze Zeit vielleicht) u.U. Möglich das PW auszulesen. Daher solltest du das PW eher in einer eigenen (php-)Datei ausserhalb des Webpfades ablegen und dann per Include einbinden.

Die md5-Variante wäre dem aber vorzuziehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

darf ich mich mal an die Frage anhängen ??

Das geschilderte Problem im letzten Post würde ich gerne nochmal aufgreifen.

Was mache ich denn am besten bei SQL-DB-Zugriffen ?

Ich muss dort doch im Quellcode ein SQL-Connect machen, und dort das PW im Klartext angeben.

Wie kann ich das umgehen ?? Damit mir niemand bei nem Serverproblem die Zugangsdaten zum SQL-DB ausliest?

Danke

Michael

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich muss dort doch im Quellcode ein SQL-Connect machen, und dort das PW im Klartext angeben.

Wie kann ich das umgehen ?? Damit mir niemand bei nem Serverproblem die Zugangsdaten zum SQL-DB ausliest?

l

Du packst die Logindaten in eine PHP-Datei, die du ausserhalb des Webpfades ablegst. Also so, dass du über den Webserver keinen zugriff darauf hast. z.B.


<?php
$dbhost = "localhost";
$dbname = "test";
$dbname = "dblogin";
$dbpasswd = "12345";
?>
[/php]

In deiner Datei bindest du die Datei dann per include ein. PHP hat Zugriff auf die Datei (wenn die Berechtigung stimmt) aber sonst keiner.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also am einfachsten isses wenn du die http-authentisierung verwendest

http_user

http_passwd


<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
Header("WWW-Authenticate: Basic realm=\"My Realm\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\n";
exit;
} else {
echo "Hello {$_SERVER['PHP_AUTH_USER']}";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>
[/php]

quelle: phpmanual

wenn du https hernimmst is die übertragung auch noch sicher .....

falls dir das aber noch net genug ist kannst du dir auch selbst ein chap coden ^^

chap for php

Link zu diesem Kommentar
Auf anderen Seiten teilen

also am einfachsten isses wenn du die http-authentisierung verwendest

Er sagte aber, dass htaccess ausscheidet. Also kann er dem Webserver seinen "Realm" (den Bereich, der geschützt ist) garnicht mitteilen (denke mal er wird dann auch keinen Zzugriff auf die Serverkonfiguration haben). Ausserdem kann er auch kein htpasswd angeben und auch nicht, was für User für diese Authentifizierung gültig sind. HTTP-Authentisierung schön und gut, aber hier wohl eher fehl am Platz.

Link zu diesem Kommentar
Auf anderen Seiten teilen

das is doch was komplett anderes...

das is ein normaler http-request dazu braucht man keinen zugriff auf die serverconfig

The request requires user authentication. The response MUST include a WWW-Authenticate header field (section 14.47) containing a challenge applicable to the requested resource. The client MAY repeat the request with a suitable Authorization header field (section 14.8). If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has already attempted authentication at least once, then the user SHOULD be presented the entity that was given in the response, since that entity might include relevant diagnostic information. HTTP access authentication is explained in "HTTP Authentication: Basic and Digest Access Authentication"

Link zu diesem Kommentar
Auf anderen Seiten teilen

das is doch was komplett anderes...

das is ein normaler http-request dazu braucht man keinen zugriff auf die serverconfig

Ein 401 ist nichts anderes, als der Server schickt, wenn in der config oder einer .htaccess Datei eine authorisierung vorgesehen ist.

Ok, da es sich um eine einzelne Seite handelt ginge das hier wohl, sobald aber mehr als eine Seite im spiel ist nicht mehr (bzw. mit einer Anmeldung auf jeder Seite).

War ein Fehler von mir.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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