Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PHP register_globals ON: DEFINEs sicherer als globale Vars?

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 03.01.2007, 13:21

Normale globale Variablen haben den Nachteil dass bei einer
Server Config a la

register_globals On

diese "von aussen" ueber die URL ueberschrieben werden koennen.
Nun, wie stehts mit define()s? Sind diese "sicherer" ?
Oder kann man diese auch "aushebeln" oder vor ihrer Definition (!) "vorbelegen", wenn ja, wie ?
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Graccem
PostRank 4
PostRank 4
Beiträge: 115
Registriert: 16.12.2004, 12:57
Wohnort: Berlin

Beitrag von Graccem » 04.01.2007, 12:39

Define erzeugt keine Variablen, sondern Konstanten. Es hat also später noch gewisse Nachteile, wenn du damit rechnen möchtest. Du bräuchtest also quasi für jede Operation eine neue Konstante.

Register_globals on ist aber eigentlich nur ein Problem, wenn man unsauber arbeitet. Wenn du Variablen hast, die nur intern verwendet werden sollen, musst du diese zuvor einfach mit einem Startwert belegen. Dieser Startwert würde dann die Werte aus GET/POST wieder überschreiben.

Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 04.01.2007, 12:46

Schoen dass endlich jemand antwortet ;)

Was Konstanten sind ist mir schon klar ;) Gerechnet oder geaendert werden die nicht..
allerdings werden sie hier zur Konfiguration "missbraucht", und zwar nur deshalb weil sie angebl. nicht von aussen ueberschrieben werden koennen, sprich SICHERER sind, und auch nicht vorinitialisiert sein muessen..

Soll heissen jemand soll vor Einbindung eines Scripts z.B. schreiben koennen:

define('NAME', 'hase');
require_once(...);

das ist offensichtlich besser udn vor allem sicherer (register globals = on ) als ne globale variable a la:

$name = 'hase;
require_once(...);

Normale Variablen werden derzeit vorinitialisiert. Grade wegen der Sicherheit bzgl. evtl. register gobal_vars = on

Die eigentliche Frage war, ob man es von aussen schaffen kann defined oder sogar noch nicht defined Constants zu ueberschreiben.. habe dazu aber nix und nirgends was gefunden, also geht es offensichtlich wohl nicht..
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

SloMo
PostRank 10
PostRank 10
Beiträge: 4880
Registriert: 04.01.2005, 18:26

Beitrag von SloMo » 04.01.2007, 13:18

Airport1 hat geschrieben:Die eigentliche Frage war, ob man es von aussen schaffen kann defined oder sogar noch nicht defined Constants zu ueberschreiben.. habe dazu aber nix und nirgends was gefunden, also geht es offensichtlich wohl nicht..
Denke ich auch, aber PHP ist hinsichtlich solcher Dinge immer für Überraschungen gut.

Alternativ könntest Du auch ein Array benutzen:

Code: Alles auswählen

// schützen...
unset( $Config );

// Konfig setzen...
$Config['NAME'] = 'hase';
Auf diese Weise könnten einzelne Konfigwerte von Dir voreingestellt werden, und der User könnte sie dann in einer eigenen config.inc.php überschreiben (was ja bei Konstanten nicht geht). Beispiel:

Code: Alles auswählen

// schützen...
unset( $Config );

// Deine defaults...
$Config['NAME'] = 'default_hase';

// Useranpassungen in Extradatei config.inc.php...
$Config['NAME'] = 'custom_hase';

Anonymous

Beitrag von Anonymous » 04.01.2007, 14:13

die variabeln die von aussen an ein php-script übergeben werden, stehen vor start des scriptes zur Verfügung, wenn du eine variable am scriptanfang also per

Code: Alles auswählen

$name="";
"initialisierst" kann man diese var von aussen nicht mehr manipulieren....

ähnliches gilt für Konstante die du über define erstellst, diese können garnicht von aussen vorbelegt werden...

ob man nun eine Konstante oder eine Variable nimmt ist absolut abhängig davon, ob sich im scriptablauf der Inhalt ändern oder absolut "konstant" bleibt....

Graccem
PostRank 4
PostRank 4
Beiträge: 115
Registriert: 16.12.2004, 12:57
Wohnort: Berlin

Beitrag von Graccem » 04.01.2007, 15:54

Airport1 hat geschrieben: Soll heissen jemand soll vor Einbindung eines Scripts z.B. schreiben koennen:

define('NAME', 'hase');
require_once(...);

das ist offensichtlich besser udn vor allem sicherer (register globals = on ) als ne globale variable a la:

$name = 'hase;
require_once(...);

Normale Variablen werden derzeit vorinitialisiert. Grade wegen der Sicherheit bzgl. evtl. register gobal_vars = on
Naja, da $name vom Script beschrieben wird, ist das auch ausreichend sicher. Da hat dann doch eher die Konstante ein Manko, da diese sich dann nicht mehr überschreiben lässt und der gefakte Wert dann drin stehen würde. ABER
Die eigentliche Frage war, ob man es von aussen schaffen kann defined oder sogar noch nicht defined Constants zu ueberschreiben.. habe dazu aber nix und nirgends was gefunden, also geht es offensichtlich wohl nicht..
so etwas ist mir nicht bekannt. Das kann man aber ebenfalls abfangen.

Code: Alles auswählen

define('Test',1); // Der gefakte Wert, wie auch immer dieser ins Scipt kommt

if (!defined('Test')) {
	define('Test',2); // Der richtige Wert
} else {
	die();
}
Mit der Überprüfung sollte man auf der sicheren Seite sein, falls es mal ein Bug geben sollte, der es erlaubt, die Konstanten zu beschreiben.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag