php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.12.2010, 16:48  
Benutzer
 
Benutzerbild von Raiden
 
Registriert seit: 13.06.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
Raiden befindet sich auf einem aufstrebenden Ast
Raiden eine Nachricht über ICQ schicken
Standard [Erledigt] Sicherheit bei Objekt-Eigenschaften in einer Session

Hey zusammen

Ich hab mir die Frage gestellt, ob Eigenschaften eines Objekts das im Session-Array gespeichert wird sicherer sind, als diese Eigenschaften lose (ohne Objekt-Hintergrund) in das Session-Array zu schreiben.

Hintergrund ist, dass ich bisher z.B. ein Benutzerpassword nur als md5-Hash im Session-Array gespeichert habe weil mir das Speichern im Klartext zu unsicher war.
Wie sieht es da mit einem Objekt aus?
Wenn ein Objekt im Session-Array gespeichert ist, kann man dann auf die Eigenschaften des Objekts (z.B. das im Klartext gespeicherter Password) von außen zugreifen? Die Kapselung von OOP sollte das doch normal verhindern, oder?
__________________
Es gibt Tage da verliert man und es gibt Tage da gewinnen die anderen ...
Raiden ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.12.2010, 16:55  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Kapselung bei OOP hat absolut nichts mit Sicherheit zu tun.

Außerdem: Wozu willst du überhaupt ein Passwort (oder auch nur einen Hash davon) in der Session ablegen?
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 04.12.2010, 17:01  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Auch wenn Daten in einem Objekt gekapselt sind kannst du sie trotzdem noch von außen auslesen. Zwar nicht mehr einfach indem du auf das Element direkt übers Objekt zugreifst aber schau dir mal var_dump oder sowas an, damit kannst immer noch alles rausfinden.
Flor1an ist offline   Mit Zitat antworten
Alt 04.12.2010, 17:21  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

„Objekte“ kann man gar nicht in Sessions speichern.
Sie werden zuvor serialisiert, d.h. in Textform überführt.
Mit Zugriff auf die Session-Datei kann man da alle Werte genauso auslesen, egal ob sie zu einem Objekt gehören oder nicht.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 04.12.2010, 17:23  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Entscheidend ist Flo's Hinweis. Sichtbarkeit zielt nur auf die Anwendbarkeit an, nicht auf Sicherheits- oder Zugriffsaspekte. Mehr als die Schnittstelle wird da nicht definiert.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 04.12.2010, 18:05  
Benutzer
 
Benutzerbild von Raiden
 
Registriert seit: 13.06.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
Raiden befindet sich auf einem aufstrebenden Ast
Raiden eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von agrajag Beitrag anzeigen
Kapselung bei OOP hat absolut nichts mit Sicherheit zu tun.
Ich kenn mich zwar nicht mit Angriffsmöglichkeiten aus, aber prinzipiell hat Kapselung doch schon was mit Sicherheit zu tun.
Immerhin ist - je nach definierter Sichtbarkeit - der Zugriff ja nur über das Objekt möglich und nicht direkt auf die Variable. Das mag zwar zum Teil nur eine Formsache sein, aber es muss ein Objekt vorhanden sein um auf dessen Methoden oder Eigenschaften zugreifen zu können.
Ausnahme sind natürlich solche Dinge wie statische Eigenschaften und Methoden.
Und als privat oder protected definierte Eigenschaften und Methoden sind ohnehin nur innerhalb der Klasse aufzurufen und sonst nicht - so viel ich weiß.

Zitat:
Zitat von agrajag Beitrag anzeigen
Außerdem: Wozu willst du überhaupt ein Passwort (oder auch nur einen Hash davon) in der Session ablegen?
Beispielsweise für einen gesicherten Autologin.
Der Auto-Login-Code als erste und der gespeicherte md5hash des passworts als zweite Identifikations-Möglichkeit.

Zitat:
Zitat von Flor1an Beitrag anzeigen
Auch wenn Daten in einem Objekt gekapselt sind kannst du sie trotzdem noch von außen auslesen. Zwar nicht mehr einfach indem du auf das Element direkt übers Objekt zugreifst aber schau dir mal var_dump oder sowas an, damit kannst immer noch alles rausfinden.
OK, an var_dump etc. hab ich nicht gedacht.
Ich hab OOP bisher in Java kennen gelernt und da war ich gewohnt, dass es so ablief wie oben beschrieben.

Aber dein Kommentar hat mir die Frage wirklich am besten beantwortet.
Ich dachte, dass das gekapselte Objekt mehr oder weniger "unangreifbar" wäre.

@ nikosh, chrisB:
Danke auch für eure Hinweise.
Die Antworten haben mir alle sehr geholfen
__________________
Es gibt Tage da verliert man und es gibt Tage da gewinnen die anderen ...
Raiden ist offline   Mit Zitat antworten
Alt 04.12.2010, 18:12  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich bin mir sehr sicher das man auch in Java über sogenannte Reflections auf private Eigenschaften von Objekten zugreifen kann. Das ist natürlich nicht für den normalen Programmierbedarf gedacht und hebelt natürlich das Sichtenschema auf, aber die Sichten sind auch nicht für Sicherheit sondern eben um klare Schnittstellen zu schaffen. Von daher kannst du dich da definitiv nicht drauf verlassen das private Eigenschaften/Methoden von außen nicht erreichbar sind.

Oder denk an die serialisierbarkeit von Objekten. Wenn das Objekt serialisiert ist haste ne schöne Darstellung mit allen internen Attributen. Das geht in PHP sowohl als auch in Java.

Geändert von Flor1an (04.12.2010 um 18:16 Uhr).
Flor1an ist offline   Mit Zitat antworten
Alt 04.12.2010, 18:34  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Immerhin ist - je nach definierter Sichtbarkeit - der Zugriff ja nur über das Objekt möglich und nicht direkt auf die Variable. Das mag zwar zum Teil nur eine Formsache sein, aber es muss ein Objekt vorhanden sein um auf dessen Methoden oder Eigenschaften zugreifen zu können.
Ausnahme sind natürlich solche Dinge wie statische Eigenschaften und Methoden.
Das hat aber mit Sicherheit nichts zu tun. Das entspricht in etwa dem Security by obscurity Prinzip bzw. dem Schlüssel unter der Fußmatte. Nur weil (vielleicht) niemand davon weiß, ist das Verfahren nicht sicher.
Ein anderes Beispiel wäre ein Tresor mit einer Rückwand aus Pappe.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 04.12.2010, 20:07  
Benutzer
 
Benutzerbild von Raiden
 
Registriert seit: 13.06.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
Raiden befindet sich auf einem aufstrebenden Ast
Raiden eine Nachricht über ICQ schicken
Standard

Ja OK. Das macht Sinn ...
Ich bin wohl zu naiv an die Sache heran gegangen
Danke jedenfalls für die Aufklärung

Abseits des Sicherheitsaspekts, was haltet ihr denn generell vom Ablegen von Objekten - oder serialisierten Objekten - im Session-Array?
Ist das generell Quatsch? Soll man die OO an dieser Stelle einfach außen vorlassen?
Ich weiß nämlich nicht, ob es dann nur objektorientiert der Objektorientiertheit wegen wäre oder ob es tatsächlich einen nennenswerten Vorteil bringt.

Denn letztlich ist es doch egal, ob ich jetzt mit ...
PHP-Code:
$_SESSION['object'] -> var1
$_SESSION
['object'] -> var2
$_SESSION
['object'] -> var3 
... oder ...
PHP-Code:
$_SESSION['var1']
$_SESSION['var2']
$_SESSION['var3'
... auf die Eigenschaften des Objekts zugreife, oder nicht?
__________________
Es gibt Tage da verliert man und es gibt Tage da gewinnen die anderen ...
Raiden ist offline   Mit Zitat antworten
Alt 04.12.2010, 23:13  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von Raiden Beitrag anzeigen
Denn letztlich ist es doch egal, ob ich jetzt mit ...
PHP-Code:
$_SESSION['object'] -> var1
$_SESSION
['object'] -> var2
$_SESSION
['object'] -> var3 
Auf diese Weise das Objekt in der Session anzusprechen halte ich für ungeschickt. Stattdessen würde ich im Konstruktur das entsprechende Session-Objekt zurückgeben und mit $this arbeiten. Ich persönlich finde Objekte in der Session je nach Anwendungsbereich sehr nützlich. Bspw. habe ich damit ein Warenkorb-System realisiert.

Was die Sicherheit anbelangt stimme ich meinen Vorrednern zu.

Geändert von Trainmaster (04.12.2010 um 23:16 Uhr).
Trainmaster ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] $_SESSION frage tomnar PHP Tipps 2010 24 09.11.2010 19:37
[Erledigt] Session Klasse in Session Haze PHP Tipps 2010 11 27.01.2010 20:59
Objekt aus Session auslesen??? pfump PHP Tipps 2009 5 06.10.2009 10:43
SessionHandler - Sessions in einer Datenbank #Avedo Software-Design 11 04.05.2009 15:44
Objekt im GET-Query wird nicht übertragen Ralpho PHP-Fortgeschrittene 10 05.05.2008 10:03
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
Objekt in Session übergeben jacos PHP Tipps 2006 2 21.02.2006 00:11
[Erledigt] PHP5 OOP Zugriff aus einem Objekt auf ein externes Objekt PHP Tipps 2006 5 28.01.2006 16:05
[Erledigt] php session problem :( PHP Tipps 2005-2 5 21.10.2005 16:37
Session abschaltbar?? Probleme mit Objekten in Session! becks123 PHP-Fortgeschrittene 3 19.09.2005 15:47
Klassenobjekt in ner Session speichern?! Finkman PHP Tipps 2005-2 5 09.08.2005 00:38
kann sich ein Objekt selbst serialisieren? ajo_silent PHP Tipps 2005-2 24 27.06.2005 09:13
Frage zu Session und Objekten PHP Tipps 2005 2 24.05.2005 09:29
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
Objekt in einer Session suter PHP Tipps 2004-2 2 13.12.2004 17:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php session objekt verliert inhalte, wozu sessions serialisieren, objekte von aussen auslesen, obejkteigenschaften php session, anzeige von sicherheitseigenschaften des objektes, php oop auf objekteigenschaft zugreifen, sicherheitsaspekte sessions, session objekt eigenschaften, php 5 objekte in session speichern, objekte in session übergeben php, objekteigenschaften werden nicht gespeichert php, php objekt in session übergeben, php zugriff auf objekteigenschaften, php sicherheit session, session verliert objekte, objekt in session speichern sicherheit, session php eigenschaften, sicherheitseigenschaften des objekts, php object session, php5 session klasse

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum