echo $begrüßung;
Worauf muesste ich denn so achten, wenn ich da nur "sichere" Software, fuer die obige Einstellungen nicht noetig sind, haben will?
Nun, du müsstest entweder dem Quelltext oder den Aussagen des Programmierers vertrauen (wobei sich wohl kein ernsthafter Programmierer von sich behaupten wird, sein Code bei absolut sicher), oder du schaust dir den Quelltext an und achtest dabei mindestens darauf, wie SQL-Statements zusammengebaut werden, wie Ausgaben im HTML-Kontext behandelt werden und wie mit Variablen umgegangen wird.
ein Beispiel zum letzten Punkt:
foreach ($ein_array as $wert)
$ein_string .= $wert;
Hier wird an $ein_string jeweils der Inhalt von $wert angehängt. Dazu wird zuerst der alte Wert aus $ein_string gelesen. Gab es diese Variable vorher noch nicht - was hier beim ersten Schleifendurchlauf der Fall sein sollte - ergibt dieser Lesezugriff ein NULL, der durch die automatische Typumwandlung zu einem Leerstring mutiert. Mit register_globals kann jedoch sonstwas drinstehen, wenn jemand via GET oder POST oder COOKIE einen Parameter namens ein_string übergibt.
$ein_string = '';
foreach ($ein_array as $wert)
$ein_string .= $wert;
So ist das Konstrukt unanfällig gegen register_globals. PHP freut sich auch darüber, denn nun gibt es keine Notice-Meldung, wenn das error_reporting aus E_ALL steht.
Wie es aussieht, schlaegt das System diese Einstellungen vor, da es erweiterbar ist und vor unsicher programmierten Erweiterungen geschuetzt werden soll...
Dann wären diese Erweiterungen vor dem Einsatz einer Kontrolle zu unterziehen.
Was ist, wenn jemand zufälligerweise register_globals einschaltet?
echo "$verabschiedung $name";