php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.08.2006, 12:08  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard Sicherheits-Logik-Frage zu Register_Globals on und Variablen

Moin Moin,

habe mir mal das PHP Security Guide mit der Übersetzung von Jens Ferner durchgelesen. Vieles kannte ich schon. Aber man lernt ja bekanntlich nie aus :wink:

Eine Sache hat mich aber allerdings etwas verwirrt. In einem Abschnitt hieß es zu Register_Globals=on

Zitat:
<?php
$test = "";
$test = "bla";
?>
Das man immer die Variablen zuerst initialisieren sollte (siehe rotmarkierte Zeile), da es sonst passieren kann, wenn man Register_Globals=on hat diese davon überschrieben werden können.

Aber stehen zur Laufzeit nicht zuerst die Variablen von Register_Globals zur Verfügung und diese können dann von $test="bla" überschrieben werden?
DonTermi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.08.2006, 12:47  
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

Es geht darum:
PHP-Code:
<?php
if ($_SESSION['admin'] == 'ja'$admin == 'ja';

// Admincenter
if ($admin == 'ja')
{
    
// Adminfunktionen ...
}
?>
Zum Beispiel hier wäre der Zugang zum Admincenter nur Möglich wenn in der Session eben 'admin' auf 'ja' gesetzt ist.
Wenn du jetzt mit deinen tollen register_globals kommst und einfach an die URL
?admin=ja anhängst ist egal ob nun $_SESSION['admin'] auf ja oder etwas anderes steht, $admin ist immer auf 'ja' gesetzt!
PHP-Code:
<?php
$admin 
'';
if (
$_SESSION['admin'] == 'ja'$admin == 'ja';

// Admincenter
if ($admin == 'ja')
{
    
// Adminfunktionen ...
}
?>
Hier wird erstmal $admin intialisiert. Also es wird z.B. so eine Eingab wie ?admin=ja überschrieben. Und man kann nichtmehr über die URL sich Zugang zum Admincenter beschaffen.

Aber du solltest sowieso mit register_globals auf off programmieren! Also mit $_POST['admin'] bzw. $_GET['admin'].
Flor1an ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:37  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

Keine Sorge. War wie gesagt nur eine Logikfrage

Bei Deinem Beispiel und wie Du es nochmal erklärt hast ist es völlig logisch was dann bei register_globals=on passiert.

Arbeite nur mit register_globals=off und den Superglobals.

Danke.
DonTermi ist offline   Mit Zitat antworten
Alt 22.08.2006, 13:41  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Ein anderer Punkt ist der hier:
PHP-Code:
<?php
if (ini_get('register_globals') !== '1')
    die(
'You have to turn on register_globals');
ini_set('session.use_trans_sid''1');

session_start();
if (!isset(
$_SESSION['foo']))
    
$_SESSION['foo'] = 'bar';
$foo 42;

printf('$foo: %s
'
$_SESSION['foo']);

$sSessionFile session_save_path() . '/sess_' session_id();
printf('Session file: %s
'
file_get_contents($sSessionFile));

echo 
'
[url="?"]klick mich[/url]'
;
?>
Das $foo = 42; überschreibt die Session-Varable. Damit kannst du dir jegliche Idee von Sicherheit zerlöchern, wie einen Käse - zumindest, wenn du mit globalen Variablen arbeitest und nicht nebenher eine Liste führst, welche Variablennamen du definitiv vermeiden musst.

Basti
Basti ist offline   Mit Zitat antworten
Alt 24.08.2006, 08:45  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

Aber mal ehrlich ... Wer nutzt heute schon noch register_globals=on?

Jedenfalls bei den Hostings die ich betreue ist es vom Provider standmäßig ausgeschalten. Außerdem ist ja sowieso von Seiten PHP's geplant register_globals ganz zu entfernen. Wird sich zwar noch etwas hinziehen, aber es wird hoffentlich passieren.

Ich selbst habe mir schon vor Jahren abgewöhnt mit register_globals zu arbeiten.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Alt 24.08.2006, 09:01  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von DonTermi
Aber mal ehrlich ... Wer nutzt heute schon noch register_globals=on?
Wenn Du diese Frage ernst meinst, dann solltest Du mal im Anfänger-Forum mitlesen.
Ein erschreckend hoher Anteil an Fragen läuft darauf hinaus, dass Scripts nicht mehr funktionieren, wenn sie auf einem weiteren Server laufen sollen, was dann häufig an register_globals liegt.

Wenn register_globals=off so selbstverständlich wäre wie es sein sollte, würden diese Fragen wohl kaum auftauchen.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline   Mit Zitat antworten
Alt 24.08.2006, 10:55  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

Spätestens wenn register_globals nicht mehr in PHP drin ist ist schicht (... und zugleich Panik)
DonTermi ist offline   Mit Zitat antworten
Alt 24.08.2006, 11:02  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Was allerdings keinerlei Auswirkungen auf alle installieren PHP4 und PHP5 Server hat.

Ich hab rein privat auch einen Hoster, der diese dumme Einstellung erstmal auf on hat. Natürlich hab ich das für meine Scripts auf off gestellt.

Ich bin mir recht sicher, die meisten Hoster werden nicht ihre kleinen Privat-kunden verschrecken wollen, die zu doof/faul sind, ihre Scripts umzuschreiben.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline   Mit Zitat antworten
Alt 24.08.2006, 11:22  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von Der_Gerhard
Ich bin mir recht sicher, die meisten Hoster werden nicht ihre kleinen Privat-kunden verschrecken wollen, die zu doof/faul sind, ihre Scripts umzuschreiben.
Ist ja auch nicht notwendig, wenn man den Kunden eben anbietet, diese Option z.B. via .htaccess zu überschreiben. Ich kann diese Politik auch gut nachvollziehen, denn ich, als Kunde, möchte ja auch keine Mail von meinem Hoster bekommen, dass ich in den nächsten 2 Monaten alle meine Skripte irgendwie umschreiben muss, blos weil der denkt, das eine Änderung der PHP-Konfiguration sinnvoll wäre. Und die Arbeit (unzählige Supportanfragen), die Auseinandersetzung mit verärgerten Kunden und die Verluste von Bestandskunden trägt natürlich der Hoster und das wird sich nicht rechnen, gegen die (womöglich ohnehin kostenpflichtigen) Anfragen nach Backup-Wiederaufspielungen etc. durch eine für Skripte sicherheitsanfällige PHP-Konfiguration.

Auf der anderen Seite verzögert das natürlich die Einführung von sinnvolleren Konfigurationen und Software, die darauf setzt.

Wenn es nach mir ginge, dann gäbe es weder register_globals, noch magic_quotes.*, noch error_reporting (display_errors sollte reichen) oder type casting (von safe_mode mal ganz zu schweigen). Aber das ist nun mal eben die Philosophie von PHP - und deshalb ist PHP ja auch so weit verbreitet und wenn man sich ein wenig eingearbeitet hat, dann sucht man sich natürlich Hoster, die einem da freie Hand lassen.

Basti
Basti ist offline   Mit Zitat antworten
Alt 24.08.2006, 11:29  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ich hab ja nicht geschrieben, dass ich das nicht verstehen könnte.

Ich wollte nur aufzeigen, dass ein Ende der mit register_globals=on verbundenen Probleme nicht in Sicht ist, nur weil demnächst irgendwann mal in einer neuen PHP-Version das Ding nicht mehr existiert.

Und dass die Antwort auf "Wer nutzt das schon noch" eben "VIELE!" lauten muss und sich so schnell auch nicht ändern wird.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard 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
Variablen Frage krackmoe PHP Tipps 2008 11 13.07.2008 16:13
Frage zu Sessions und Variablen in Session sternschnuppe99 PHP Tipps 2008 9 18.02.2008 13:30
Frage zu Session Variablen Cyberbob_at_tot PHP Tipps 2006 3 13.03.2006 16:52
Frage zur Sicherheit von GET Variablen malaga PHP Tipps 2005-2 3 20.09.2005 13:36
Kleine PHP-Gallery -> Frage zu Variablen PHP Tipps 2005 12 04.03.2005 17:58
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
frage zu variablen PHP Tipps 2004-2 11 11.11.2004 13:44
[Erledigt] Was ist sinnvoller (Frage zu Datenbank Logik oder so) PHP Tipps 2004 5 27.08.2004 12:08
Eine Logik Frage, oder sowas :D Datenbanken 5 30.07.2004 03:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
register globals sicherheits, register_globals on umschreiben

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.