PHP: passwort verbergen?

5 Antworten

ja. passwörter sollten generell nur gehashed gespeichert werden und dann bei der passwortüberprüfung die beiden hashes überprüft werden.

normal stehen die passwörter dann natürlich in einer datenbank.

außerdem solltest du das passwort auch salzen. heißt du hängst an das passwort noch einen zufälligen string der im cleartext zusätzlich zum gehashten passwort gespeichert wird. bei der prüfung hängst du dann das "salz" wieder an das eigegebene password und vergleichst dann wieder beide hashwerte.

so wird verhindert dass oft genutzte passwörter direkt aus dem hashwert gelesen werden können da dieser bekannt ist. beispielsweise hat "test" einen md5 hashwert von 098f6bcd4621d373cade4e832627b4f6

sieht ein angreifer nun diesen hashwert in der datenbank weiß er dass das passwort test ist. hättest du allerdings "test9vASD" gehasht und dann 4bdcfd3c07e42918f4d9915c2cfb1816 und 9vASD gespeichert hättest du das ganze verhindert.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik

Deine Frage ist ungenau gestellt. Hier geht erst mal jeder davon aus, dass du ein Passwort validieren möchtest das von einem User eingegeben wird. Wenn du das Passwort im Skript stehen hast um bspw. zu einer Datenbank zu verbinden kannst du nichts verschlüsseln. Am sichersten ist es wenn du das Passwort in einer Datei ausserhalb des Document-Roots ablegst (also so, dass es von außen per Browser unerreichbar ist).

Okay, da es um die DB-Zugangsdaten geht:

Lagere sie in eien eigene Datei aus, die außerhalb des Webroot liegt, aber vom Webserver gelesen werden kann. So verhinderst Du schonmal effektiv, daß die Datei über einen direkten Request ausgeliefert werden kann.

Es würde übrigens auch nichts bringen das PW gehashed abzulegen, denn wenn ich die Credentials habe, kann ich mich eh damit anmelden, egal wie sie aussehen.

$password = "hierDasPasswort";
$hash = password_hash($password, PASSWORD_DEFAULT);
//$hash ist nun der hash

Zum überprüfen, ob das Passwort richtig eingegeben wurde:

$password = "dasEingegebeneKennwort";
if(password_verify($password, $hash)) {
//das passwort ist richtig
} else {
//das passwort ist falsch
}
TimMagFussball 
Fragesteller
 21.11.2019, 17:44

nein das passwort im script!

<?php
$pdo=new PDO('mysql:host=localhost;dbname=db1','db1','PASSWORT_HIER', ...
?> 
0

ja! da gibt es verschiedene methoden ... gängig ist md5('passwort');

mach einfach mal ein echo md5('123456'); und schaue was dabei rauskommt :-)

Woher ich das weiß:Hobby – Programmierer, EDV, ... seit den 80er :)
TimMagFussball 
Fragesteller
 21.11.2019, 17:44

nein das passwort im script!

<?php
$pdo=new PDO('mysql:host=localhost;dbname=db1','db1','PASSWORT_HIER', ...
?> 
0
PeterP58  21.11.2019, 17:45
@TimMagFussball

wofür soll das gut sein?

php-dateien kann man nur auslesen, wenn man direkten zugriff auf den server, bzw. die datei hat!

1