php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.12.2011, 12:18  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard $_SESSION Variable von extern manipulierbar?

Hallo Zusammen,

mal angenommen ich setzte nach erfolgreicher Anmeldung eines Benutzers eine $_SESSION Variable wie z. B.:

PHP-Code:
<?php
   session_start
();
   
session_regenerate_id();

   if(
$_SESSION["LoginValid"] === true){
      
$_SESSION["FooBar"] = "Bla";
   }

   
mach irgendwas ...;
?>
Der Wert von "$_SESSION["FooBar"]" bleibt einzig und allein in der Session Variable und wird nirgendwo sonst abgelegt.

Es gibt also nur zwei Orte, von wo aus man diesen Wert abgreifen kann: Die Variable innerhalb der Session selbst und die lokale Server Session Datei "../tmp/sess_irgendwasabc123".

Ist jemanden von euch irgendein Weg bekannt, wodurch man diesen Wert außerhalb der eigentlichen Session, in der er zugewiesen wurde, auslesen und/oder sogar wenn es hoch kommt, manipulieren kann?

Vielen Dank schon mal im Voraus.

Gruß
Frank

Edit: APM-Umgebung befindet sich auf einem Dedicated Server ... "register_globals = off"
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...

Geändert von Neo68X (24.12.2011 um 12:32 Uhr).
Neo68X ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.12.2011, 12:42  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Wenn man mal direkten Serverzugriff außen vor lässt, dann verbleibt als einzige Möglichkeiten die etwaige Existenz von Code-Injection-Lücken irgendwo auf Deinem Host, sowie Sicherheitslücken in Deinen Abfrageroutinen.

Warum fragst Du? Was sind das für Daten?

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 24.12.2011, 12:52  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Du willst also dich selbst kompromitieren ? Hut ab.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 24.12.2011, 15:54  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Jens: Es geht um eine DB, bei der benutzerbezogene Daten auf Verschiedene Tabellen verteilt werden.

tableA
colGUID
colA
colB
colC

tableB
colGUID
colX
colY
colZ

usw.

Wenn ich jetzt die GUID des Benutzers in einer Session-Variable zwischenspeicher wäre es wohl fatal, wenn man zur Laufzeit der Session den Inhalt dieser Variable von extern manipulieren könnte und man somit die eingepflegten Daten des Benutzers abfragen bzw. verändern könnte.

Grundlegend werde ich versuchen den Code so zu gestalten, um die hier (http://phpsec.org/projects/guide/ ) aufgezeigten Sicherheitshinweise mit zu berücksichtigen. Mir ist bewusst das es zu keiner Zeit eine 100%ige Sicherheit geben wird. Was das für Daten sind, dazu möchte ich zu diesem Zeitpunkt noch nichts sagen. Im günstigsten Fall freut sich ein gewisser Personenkreis auf eine Möglichkeit, persönliche Daten auf eine einfache Art & Weise anonym zu erfassen, um nach einiger Zeit der Datenpflege per Knopfdruck eine persönliche Auswertung seiner selbst erfassten Daten zu bekommen. Das "schlimmste" was dann in diesem Fall passieren kann, sind irgendwelche Script-Kiddies die aus Langeweile versuchen sich die Zeit totzuschlagen. Im ungünstigsten Fall trete ich mit einer anonymisierten statistischen Auswertung dieser Daten einen gewissen Personenkreis auf die Füße, bei der dann andere "Kompetenzen" versuchen könnten, die gesammelten Daten zu "zerschießen".

Vielleicht ist das Ganze auch eine Nummer zu groß für mich, aber wen man es nie versucht, wird man es auch nie wissen ob dem so ist.

@tr0y: Für Dein Statement bin ich wohl zu blond ^^ ...
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...

Geändert von Neo68X (24.12.2011 um 16:02 Uhr).
Neo68X ist offline   Mit Zitat antworten
Alt 24.12.2011, 16:03  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Nuja, PHP Sperrt die User-Sessiondaten ja nich umsonst in jeweils eine datei pro session ein, ebenddrum damit sie nicht sessionübergreifen zugegriffen werden können. Was spricht dagegen die Session-Daten in eine Datenbank zu werfen und in relation zu den Usern zu setzen, anstatt sich selbst zu kompromitieren ( selbst seine Sessions zu "hacken" ( werte aus "not currently myself"-sessionfiles zu extrahieren ) ) ?
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 24.12.2011, 16:28  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@tr0y: Meinst Du die Verwendung von "session_set_save_handler" in Verbindung mit Speicherung der Sessiondaten in einer DB oder eine völlig eigenständige, selbstentwickelte Verwaltung der Sessiondaten in einer DB?

Was nach meinem Verständnis dagegen spricht ist der zusätzliche Aufwand ( Code ) zum Verwalten der Sessiondaten. Wenn $_SESSION in Verbindung mit der Sessiondatei im "/tmp"-Ordner als Speicherort der Daten zur Laufzeit der Session nach validierter Benutzeranmeldung "sicher" ist, kann ich mir alles andere sparen und hole mir den Inhalt der Session-Variable mit einem ganz einfachen $x = $_SESSION["FooBar"]; und gut is - oder gibt es was einfacheres und/oder was Schnellers? Nur ne Frage!

Gruß
Frank

PS: Meinst Du mit selbst kompromittieren, dass ich insofern ein totaler Honk bin ;o) alleine schon Aufgrund der Tatsache, dass ich das von PHP mitgelieferte Sessionverwaltungssystem ( $_SESSION nebst Sessiondatei ) verwenden möchte?
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...

Geändert von Neo68X (24.12.2011 um 16:37 Uhr).
Neo68X ist offline   Mit Zitat antworten
Alt 24.12.2011, 16:38  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Nein.

Soweit ich das gepeilt habe willst du:

User-Session A
User-Session B
User-Session C
User-Session D

Daten holen aus Session A, B, C, D.

genau das ist nicht Sinn von Sessions. Sessions dienen nur den Usern selbst die sie initiieren. Du verwaltest in ihnen nur Daten die sie betreffen. Eine Hoheitliche ebene in einer Anwendung die auf alle Sessions zugreift kompromitiert dieses System, es negiert ihren Sinn. Wenn du werte von mehreren Usern die nur "Sessionbasiert" vorliegen / auftauchen sollen, solltest du sie explizit in einer Datenbank arrangieren und das Session-System unangetastet lassen, in jeder Hinsicht.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 24.12.2011, 16:53  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein nein nein. Keine hoheitliche Instanz der Sessiondaten. Im Gegenteil.

UserA >>> Anmeldung >>> SessionDatenA
UserB >>> Anmeldung >>> SessionDatenB

SessionDatenA "sind/sollen/müssen/dürfen nur" isoliert von SessionDatenB zu betrachten sein, damit jeder User IMMER NUR seine eigenen Daten betrachten bzw. verändern kann!

Kann <BadBoy> von extern oder mit einem "fingiert registrierten Benutzerkonto" SessionDaten von A bzw. B oder anderen anmeldeten Benutzern betrachten bzw. manipulieren? Wenn das nicht geht, ist "alles gut" ...
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...
Neo68X ist offline   Mit Zitat antworten
Alt 24.12.2011, 17:21  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Nein kann er nicht.

Es geht dir also um die Kompromitierbarkeit solcher Daten innerhalb der Sessions ? Das geht ohne Rootrechte oder die Rechte des Web-Users erstmal nicht. Nur explizit in dem Fall in dem jemand FTP Zugang oder Shell-Zugang zu dem Server hätte, oder dein Script auf irgendeinem Wege Datei-System interaktionen durchführen würde, die man dazu umbiegen könnte ( ähnlich wie bei einer SQL-Injection ) um auf deinem Dateisystem rumzubasteln, wäre es pauschal gesagt möglich, etwas an den Sessiondaten zu verändern oder sie auszulesen. Zu dem Thema das zu erhindern solltest du dir einschlägige Lektüre zum Thema Server-Sicherheit ( generell ) und Sicherheits-sensible Programmierung zu Gemüte führen.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 24.12.2011, 17:31  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Genau. Es geht mir um die Sicherheit innerhalb der Session. Es werden keine Daten in Cookies oder sonst wo gespeichert. Nen Zugang via FTP zum DocumentRoot wird es auch nicht geben. Wenn man sich durch was auch immer mit ROOT-Rechten zum Web-Server hin verbinden kann, ist man eh im Anus ... da nützt einem auch der beste PHP-Code nichts.

Danke & Gruß
Frank

Ach ja, Frohe Weihnachten!
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...

Geändert von Neo68X (24.12.2011 um 17:46 Uhr).
Neo68X 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
Variable später nicht mehr definiert? Rollschuh PHP Einsteiger 12 08.10.2011 18:20
PHP Text wird nicht ausgegeben / Notice: undefined variable MBaaboura PHP Einsteiger 26 26.09.2011 11:09
[Erledigt] Mehrere Querys hintereinander funktionieren nicht wernersbacher Datenbanken 3 14.03.2011 23:08
[Erledigt] Variable in foreach erweitern ohne zurücksetzen Polliny PHP Tipps 2010 2 23.06.2010 10:13
[Erledigt] sql - Variable ?? Exception PHP Tipps 2010 9 20.02.2010 04:03
Problem Undefined variable: banbanban PHP Tipps 2009 5 04.03.2009 17:55
Variable per Session übergeben? Spricht etwas dagegen? Lapje PHP Tipps 2008 6 20.10.2008 21:49
Undefined variable Undefined property: block xxJJxx PHP Tipps 2008 16 05.08.2008 15:30
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
variable wird nich erkannt. Marian PHP Tipps 2006 1 03.04.2006 21:25
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
Variable als Variable behandeln ohne den Wert zu verwenden Pain-maker PHP Tipps 2005-2 4 11.09.2005 17:28
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
Auf Variable in extern gelagerter Funktion verwenden HTML, Usability und Barrierefreiheit 6 09.09.2004 14:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
session variable extern setzen, session manipulierbar, $_session speicherort, \$_session\ manipulierbar

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:49 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