2016-03-18 2 views
0

Um die Privatsphäre der Benutzer zu respektieren, muss ich die Informationen jedes Benutzers mit einem Schlüssel verschlüsseln, den nur sie selbst kennen. Der Server und jeder, der auf den Server oder die Datenbank zugreifen kann, sollte nicht vertrauenswürdig sein.Ist es möglich, in einer PHP-Sitzung gespeicherte Daten abzurufen? (Sicherheitsproblem)

Also werde ich jedes Benutzer-Passwort verwenden, um seine/ihre sicherheitskritischen Daten zu verschlüsseln. und das ist der Grund, dass ich das Passwort speichern muss, während die Sitzung lebt, um ihre Informationen zu verschlüsseln und zu entschlüsseln.

Und hier ist die Frage: Wenn ich das Passwort in einer Sitzung speichern, ist es für einen Angreifer mit vollem Zugriff auf den Server möglich, gespeicherte Passwort aus der Sitzung abrufen?

+2

Also, Sie möchten das Passwort auf dem Server speichern, aber Sie sagen auch, der Server kann nicht vertraut werden, warum möchten Sie dann das Passwort auf dem Server speichern? Widerspruch Widerspruch ... –

+0

Um dies zu erreichen, müssen Sie Daten auf dem Client-Computer, nicht auf dem Server verschlüsseln/entschlüsseln. Aber Sie können JS nicht verwenden, als könnten Sie dem Server nicht vertrauen, dem Sie nicht vertrauen können, dass der Server den richtigen JS bedient. Und kannst du das überhaupt tun? Können Sie dem Client-Computer vertrauen? – JimL

+0

Wenn Sie versuchen, die Daten über das Passwort salt zu verschlüsseln, kann nur das Passwort die Daten entschlüsseln. Sie können keine Daten verarbeiten, weil sie verschlüsselt sind, oder zumindest die Daten der Benutzertabelle, wenn Sie die Inhalte von den tatsächlichen Benutzern abstrahieren. Die Frage ist jedoch ....Wenn bekannt ist, dass der Server nicht vertrauenswürdig ist, glauben die Benutzer möglicherweise nicht, dass der Server tatsächlich die Daten überhaupt verschlüsselt. – Fallenreaper

Antwort

2

Sie Frage macht nicht viel Sinn.

Ich muss die Informationen jedes Benutzers mit einem Schlüssel verschlüsseln, den nur sie selbst kennen.

Sie sprechen von End-to-End-Verschlüsselung

Ich brauche das Passwort zu speichern, während die Sitzung

lebt kennen Sie die Passwörter der Nutzer!

Sie sollten entscheiden, ob Sie eine Ende-zu-Ende-Verschlüsselung (wo der Schlüssel niemals den Computer des Benutzers verlässt) verwenden möchten oder nicht.

Ist es einem Angreifer mit vollem Zugriff auf den Server möglich, das gespeicherte Kennwort aus der Sitzung abzurufen?

Ja

+0

Es geht nicht um Ende-zu-Ende-Verschlüsselung. Die gesamte Verschlüsselung erfolgt auf der Serverseite. Ich speichere nicht das Passwort des Benutzers, also weiß ich es nicht (Ich benutze Hash-Passwort) der einzige Ort, in dem Passwort gespeichert ist als Text ist in der Sitzung –

+0

@SorooshGhaffari und Sie sollten, wenn 'Server und jeder, der auf den Server oder die Datenbank zugreifen kann nicht vertrauenswürdig sein –

1

Kurze Antwort: Ja ein Angreifer vollen Zugriff auf den Server das Passwort aus der temporären Sitzungsdatei abrufen kann.

Hier ist ein kurzes Beispiel, wo wir die Session-Datei neben unserer PHP-Datei platzieren und dann ihren Inhalt lesen.

<?php 

session_save_path('./'); 
session_start(); 

$_SESSION['password'] = 'xc4qh8wzza1xmx6vhf0nfuzluigqxlj'; 

echo file_get_contents('./sess_' . session_id()); 

?> 

Das Ergebnis ist

Passwort | s: 31: "xc4qh8wzza1xmx6vhf0nfuzluigqxlj";

Wie Sie sehen können, sind die Daten im Klartext gespeichert und können leicht gelesen werden.