Ich wollte wissen, ob es eine etwas einfache, aber sichere Methode gibt, Strings (nicht Passwörter) mit einem Passwort zu verschlüsseln, das nicht auf dem Server in PHP gespeichert ist.
Ich habe eine reversible Passwort-Verschlüsselungsroutine für PHP überprüft , aber ich bin mir nicht sicher, ob es das tut ist sicher genug, wenn Eindringlinge Zugriff auf den Server und die Quelle haben.
Wir sprechen von einem automatischen System, bei dem ein Computer eine Anfrage an einen Server sendet, der Informationen in einem Protokoll speichert. Ich denke also, ich könnte das Verschlüsselungspasswort im Anforderungsheader senden, vorzugsweise verschlüsselt, aber dann wäre es schwierig, es zu entschlüsseln, ohne das Passwort irgendwie auf dem Server zu speichern. Warten Sie, ich denke, ich könnte die Dinge ein wenig zu viel verkomplizieren, aber ich hoffe, Sie bekommen die Idee ... Es ist beabsichtigt, die Informationen sicher zu halten, auch wenn Hacker die volle Kontrolle über den Server haben.
Wenn ich Sie richtig verstehe, zielen Sie auf ein Protokoll ab, das vom Server verschlüsselt wird. Die Anfragen werden einfach gesendet, aber Sie möchten etwas wie Zugriffsstatistiken pro Benutzer oder Ähnliches protokollieren und halten diese Daten für vertraulich. Sie sollten daher vom Server verschlüsselt und vom Server entschlüsselt werden notwendig.
Wenn das der Fall ist, ist es eigentlich nicht allzu kompliziert.
Dann werden Sie feststellen, dass Sie ein Hühnerei-Problem erstellt haben - die Datei benötigt wieder ein Passwort, damit der Server auf den darin gespeicherten Schlüssel zugreifen kann. Aber hier ist der Trick - Sie müssen den Schlüssel beim Serverstart manuell eingeben, und das ist die ephemere Komponente, die Sie brauchen. Das Passwort für die Datei sollte Out-of-Band-Informationen sein (z. B. in einem physischen Tresor) und nirgendwo auf dem Computer selbst.
Eine Alternative (aber möglicherweise weniger sicher, da das Kennwort in einer physischen Form vorliegen würde) besteht darin, sich auf betriebssystemspezifische "Passwort-Depots" wie Windows 'Isolated Storage .
Eine Option hierfür, die Ihren Anforderungen entsprechen würde, wäre die Verwendung der Kryptografie mit öffentlichem / privatem Schlüssel. Wenn der Benutzer die Zeichenfolge mit einem öffentlichen Schlüssel verschlüsseln würde und die verschlüsselten Daten auf dem Server gespeichert wären, könnte ein Angreifer die Daten nicht entschlüsseln.
Wenn / wenn Sie die Daten entschlüsseln müssen, kopieren Sie sie einfach an einen Speicherort, an dem Sie den privaten Schlüssel haben, und verwenden Sie diesen für die Entschlüsselung.
Ich würde mit Mcrypt gehen, um Daten in PHP zu verschlüsseln / entschlüsseln.
Mein Algorithmus der Wahl wäre zweifach.
Sie benötigen einen Schlüssel zum Verschlüsseln / Entschlüsseln von Daten und senden Sie es per Anfrage könnte ein Sicherheitsproblem sein, es sei denn Sie ssl implementiert haben.
Wenn die Verschlüsselung auf Anfrage nicht Echtzeit-Sache sein sollte, könnte man einfach das Skript in der Konsole ausführen, damit das Passwort nicht auf dem Server gespeichert wird.
Der Code für die Verschlüsselung / Entschlüsselung ist einfach:
%Vor%Tags und Links string php security passwords encryption