Kann ich Benutzernamen und Passwort in PHP-Sitzungsvariablen sicher speichern?

8

Ich möchte eine leichte Webanwendung auf einer REST-API erstellen, wo der Benutzer nur einmal authentifizieren sollte. Von diesem Zeitpunkt an werden alle Anfragen gegen die Web-API hoffentlich ausgeführt, indem der Benutzername und das Passwort auf irgendeine Weise erhalten werden / p>

Ich habe bereits einen funktionierenden Prototyp erstellt, bei dem den Benutzernamen und das Passwort in Sitzungsvariablen speichert , wenn die erste Anfrage an die REST API erfolgreich ist und von da an alle Die Anfrage wird mit den Authentifizierungsinformationen aus den Sitzungsvariablen gestellt. So weit so gut.

Bei diesem Ansatz merke ich, dass jemand mit Zugang zum Server das Passwort lesen könnte. Gibt es einen Weg in PHP, dass ich meinen Ansatz mit einer angemessenen Menge an Sicherheit verfolgen könnte?

Aktualisierung mit einigen weiteren Details:

Das beabsichtigte Ziel besteht darin, eine Visualisierung von Daten, die von einer API abgerufen werden, zu machen, basierend auf der Abfrage von Daten mit unterschiedlichen Daten, ohne dass der Benutzer seinen Benutzernamen und sein Passwort für jeden Versuch eingeben muss. Die API ist also völlig zustandslos, aber die Webanwendung mit gui sollte Stateful sein.

In diesem Fall habe ich keine Kontrolle über die Rest-API, so dass jede Anfrage an sie immer den API-Benutzernamen und das Passwort mit Basic Auth senden muss, es gibt keine alternativen Schemata wie einen API-Schlüssel, Session-Token oder ähnliches . Deshalb muss ich den Benutzernamen und das Passwort so lange behalten, wie eine Benutzersitzung dauert, und ich wollte wissen, ob der Ansatz, sie in Sitzungsvariablen zu speichern, als sicher betrachtet werden kann.

    
Bjørn Otto Vasbotten 10.11.2013, 22:16
quelle

1 Antwort

1

Solange Sie den Sitzungsstatus nicht auf dem REST-API-Server speichern, sondern nur auf Ihrer Client-Webanwendung, scheint dies aus architektonischer Sicht sinnvoll.

Wenn Sie den Benutzernamen und das Passwort wirklich verwenden müssen und kein Einweg-Token erhalten können, können Sie sie mit einem serverseitigen Schlüssel verschlüsseln und sofort entschlüsseln, wenn Sie sie an die API senden jemand kann eine Sitzung entführen, sie kann den Benutzernamen und das Passwort nicht ohne den serverseitigen Schlüssel erhalten, aber Sie sollten mit Ihrer PHP-Sitzung sowieso viel vorsichtiger sein.

PHP-Sitzungssicherheit .

Befolgen Sie die in der Antwort zu dieser Frage beschriebenen Schritte, außer dass Sie HTTPS für alle Interaktionen zwischen dem Benutzer und der Webanwendung sowie zwischen der Webanwendung und der REST-API verwenden sollten.

    
Pedro Werneck 10.11.2013, 22:27
quelle

Tags und Links