2009-06-11 6 views
0

Derzeit habe ich eine Klasse im Konstruktor speichert Variablen in $_SESSION.

Ich wurde aufgefordert, die user_id in $_SESSION nicht zu speichern, denn dann könnte ein Benutzer die ID zu einem seiner Vorlieben ändern, und dann auf die Website frei von jedem Konto zugreifen. Stattdessen habe ich eine session_id gespeichert und eine Tabelle erstellt, die eine session_id mit einer user_id verknüpft hat.

Meine Frage ist - wie schwierig ist es, diese Daten zu manipulieren? Ich habe auch ein Speichersystem in meinem Projekt, und ich erkannte, dass ich nicht in der Lage wäre, Dinge wie die Besitzer-ID des Geschäfts in einer $_SESSION Variablen zu speichern. Dies würde dazu führen, dass ich die Datenbank mindestens jede Seite abfragen würde, um die Daten zu bekommen. Wie sicher ist es, diese Art von Informationen in $_SESSION zu speichern? Hat jemand eine bessere Lösung?

Antwort

8

Wer auch immer Ihnen gesagt hat, ist falsch; Der Benutzer kann die Daten, die Sie im Array $_SESSION speichern, nicht ändern. Was der Benutzer könnte bearbeiten ist der Cookie, der mit der SessionID festgelegt ist, so dass PHP diesen Benutzer erkennen kann. Sie können es jedoch nicht wirklich realistisch in die Sitzungs-ID eines anderen Benutzers ändern. Die einzige Gefahr, die Sie ausführen, ist, wenn jemand irgendwie den Sitzungs-Cookie des Benutzers in Besitz nimmt, in welchem ​​Fall er sich als angemeldeter Benutzer auf Ihrer Website darstellen kann, aber es gibt nicht viel, was Sie neben der IP-Prüfung tun können.

+0

Warum müsste ich sogar einen Keks verwenden? Warum kann ich nicht immer $ _SESSION verwenden? – daniel

+1

Der Cookie ist, wie PHP weiß, welche Sitzung zu laden – Greg

+0

oh, ich verstehe. Sie sprechen über den Cookie, den PHP automatisch erstellt, wenn ich $ _SESSION aufruft, richtig? nicht etwas, was ich tun muss? – daniel

2

Wer auch immer Ihnen gesagt hat, war falsch.

Die Sitzungsdaten werden auf dem Server gespeichert - sie können nur von jemandem geändert werden, der Zugriff auf den Server hat oder wenn jemand ein Skript aufrufen kann, das die Sitzungsdaten ändert, und nur die Skripts, die sie haben können Rufen Sie die Seiten Ihrer Website an, die Sie kontrollieren können (solange Sie Schritte unternehmen, um sicherzustellen, dass Ihr Code keine Fehler enthält).

1

Sitzungsdaten werden vom Webserver in temporären Dateien (standardmäßig) oder DB oder anderswo gespeichert (Sie können sie konfigurieren). Der Endbenutzer kann also nichts an Ihren $ _SESSION-Daten ändern, wenn Sie ihm keinen FTP/SSH-Zugriff auf Ihren Server gewähren. Das einzige, was er ändern kann, ist die Sitzungs-ID in der Anfrage, aber in diesem Fall ist nichts unsicher. Hoffentlich wird Ihr "Berater" mehr über HTTP-Sitzungen lesen und wie sie funktionieren.