Wie um sicher zu speichern Sie ein Passwort in PHP-code?
Wie kann ich ein Passwort in PHP-code und garantieren, dass niemand die Anzeige der Seite im browser können es abrufen?
Ist: <?php $password = 'password' ?>
genug? Gibt es eine bessere, sicherere Weg, dies zu tun?
- vielleicht könnten Sie uns sagen, warum Sie wollen zu speichern Sie Ihre Passwörter in einer php-Datei. dies verursacht eine Menge Verwirrung in den Antworten
- Ich entwickle ein script für einen Kunden. Ich bin mit einem 'test', Konto, da der client will nicht, dass niemand außer ihm das Kennwort kennen. Ich muss einen Weg finden, der es ihm erlaubt, leicht ändern Sie das Kennwort aus dem test-account zu sein, ohne mich zu kennen. Btw, hat dies keine Interaktion mit einer Datenbank.
- Sie sind also die Speicherung von account-Informationen in einer php-Datei? wenn ja, die akzeptierte Antwort ist bei weitem nicht die beste. ein hash+salt ist der Weg zu gehen in diesem Szenario. Ihr Kunde könnte Euch den salted hash, und Sie hätte keine Möglichkeit zu wissen, sein Passwort (oder irgend jemand anderes)
- Ich muss das client-Passwort für eine bestimmte Website melodramatically. Ich kann das nicht tun, wenn ich die hash-und salt-Passwort, oder kann ich? Danke.
- ok, also Sie müssen das Kennwort zur Authentifizierung an einen anderen Dienst (wie ein Datenbank-Kennwort). so stellen Sie sicher, dass Sie Ihre Passwort-Datei, die nicht durchsucht werden (.htaccess oder außerhalb von document-root)
Du musst angemeldet sein, um einen Kommentar abzugeben.
hängt das Typ der Kennwörter, die Sie speichern möchten.
wenn Sie möchten, speichern von Passwörtern verglichen werden, z.B. mit einem
$users
array, dann Hashen ist der Weg zu gehen.sha1
,md5
oder anderen Geschmack (hier eine übersicht)hinzufügen eines Salz - Konten für zusätzliche Sicherheit, da das Passwort wird nicht in der gleichen hash -
wenn Sie speichern möchten, ein Passwort für die Verbindung zu anderen Ressourcen wie eine Datenbank: Sie sind am sichersten, wenn Sie speichern Sie Ihre Passwörter außerhalb document root, also nicht erreichbar ist durch Browser. wenn das nicht möglich ist, können Sie eine
.htaccess
Datei zu leugnen, alle Anfragen von außerhalb<?php
- tags, dann wird es nicht an den client gesendet werden.Ihre PHP-code wird (baring-Konfiguration Fehler) auf dem server verarbeitet werden. Nichts im
<?php ?>;
Blöcke immer sichtbar auf dem browser. Sie sollten sicherstellen, dass der deployment-server wird nicht angezeigt, syntax-Fehler an den client - also die Fehlerberichterstattung ist etwas nicht einschließlich E_PARSE, daß eine übereilte Bearbeiten der live-code (gebe es zu, wir alle tun 🙂 Leck einige Informationen.Edit: Der Punkt über die Speicherung in einer Datei außerhalb des document root) Exposition vermeiden, wenn Sie Ihre PHP-Konfiguration bricht ist sicherlich gültig. Wenn ich in PHP, hielt ich eine config.inc-Dateien außerhalb von htdocs, dass war
require
d zur Laufzeit, und exportierte Konfiguration auf bestimmte Variablen (z.B. Passwörter).Gibt es viele Möglichkeiten, dies zu tun. Jedoch werden die Menschen nicht sehen können das Passwort, das Sie gespeichert (als text) in eine PHP-Datei, da PHP ist eine serverseitige Sprache, was bedeutet, dass, solange Sie nicht drucken Sie es aus dem browser, wird es unsichtbar bleiben.
So ist es "sicher" ist.
Sagen wir mal Ihr Passwort "
iamanuisance
". Hier ist, wie zu speichern das Passwort im code. Nur slip dies in Ihrem Kopf-irgendwo.Nur in einem Fall ist es nicht ganz offensichtlich, dann können Sie leicht Zugang zu den Kennwort später auf als
$password
. Prost! 😛Speichern das Kennwort verschlüsselt. Nehmen wir zum Beispiel die Ausgabe von:
...und legen Sie es in Ihrem code. Noch besser, legen Sie es in Ihre Datenbank oder in eine Datei außerhalb des web-server-Verzeichnis-Struktur.
Wenn Sie abrufen können, die das Passwort innerhalb von PHP, dann ist es wieder auffindbar...
Die einzige Sache, die Sie tun können, ist, sich zu bewegen Sie Ihr Kennwort ein, um ein "geschützter" Ort.
Meisten hosting-Unternehmen bieten einen separaten Ort, wo können Sie Ihre DB-Dateien usw., und diese Lage wird nicht der Zugang über den browser. Sollten Sie die Speicherung der Passwörter gibt.
Aber Sie sind immer noch auf dem server, und wenn jemand erhält Zugang zu Ihrem Rechner hat, dann hat er dein Passwort. (Er bekommt, um Ihre PHP -, der hat die Möglichkeit, Sie zu entschlüsseln, und er hat Zugriff auf die geschützte Datei -> er kann es Lesen)
Also gibt es keine solche Sache wie eine "sichere Passwort"
Die einzige option, die SIE haben, ist nicht die Speicherung der PASSWÖRTER für Ihre Benutzer etc... ich wütend, wenn ich einen Dienst abonnieren, und Sie boten an, schicken Sie mir mein Passwort per E-Mail, falls ich es vergessen. Sie speichern es in einer "Abrufbaren Weg", und das ist nicht etwas, was Sie tun sollten.
Das ist, wo alle die das Hashen und Salzen kommt. Sie möchten veryfy, dass jemand auf eine Ressource zugreifen können. Damit Sie hash + Salz das Kennwort, und speichern Sie in der Datenbank für die BENUTZER, die Zugriff auf den Dienst, und wenn der Nutzer will, um Sie zu authentifizieren anwenden des gleichen Algorithmus zum erstellen der hash und vergleichen diese.
Basic, wahrscheinlich nicht 100% wasserdicht, reicht aber für Allgemeine Zwecke:
hash des Passworts (Salz für zusätzliche Sicherheit) mit Ihrer Lieblings-Algorithmus und speichert die hash (und das Salz). Vergleichen Sie gesalzen & Hash-input mit gespeicherten Daten, um zu überprüfen Sie ein Kennwort.
PHP-code-Blöcke nicht abgerufen werden können, von Kunden, es sei denn, Sie Ausgabe etwas. Beachten Sie:
Benutzer kann sich entweder auf OK oder Falsch, sonst nichts.
../../../../../etc/passwd
irgendwo in der URL :-). Aber zugegeben, das funktioniert, wenn Sie nicht darauf achten, was der Benutzer eingibt und haben etwas sensibler in einer Datei gespeichert.Ich im Allgemeinen nicht Vertrauen rohen PHP-code für die Passwörter für Dienste. Schreiben Sie ein einfaches PHP-Erweiterung zu release das Passwort. Dadurch wird sichergestellt, dass die arbeiten eingestellt Passwort, ist kostenlos, und es macht es ein zusätzlicher Schritt für einen kompromittierten Maschine gewähren von Zugriff auf die hacker die service.
Vorgeschlagen, speichern Sie das Passwort mit sha1, gesalzen und gepfeffert
vergleichen und dann die zwei Werte
Und wenn Sie können nicht speichern Sie Ihre Hash-Passwörter, die außerhalb der root-server, denken Sie daran, apache anweisen, verbieten den Zugriff auf die Datei, in der Ihre .htaccess-Datei:
Ist der beste Weg, zu speichern Passwort über Ihr root-Verzeichnis. Wenn Sie beschließen, das Kennwort in der php-Datei dann kein Körper wäre in der Lage, anzeigen, weil php-Dateien sind excuted in den server. Aber wenn der server kein php unterstützen, dann werden diejenigen Dateien geliefert werden, die als text-Dateien und jeder kann das Passwort einsehen.