fastix®: (dennoch Menschelei) - register_globals on *ärger*

Moin!

Gestern habe ich hier irgendwo gelesen, man könne mit

register_globals on

und Ausnutzung des hübschen Effektes, dass man dann seine Formulareingaben, Sessionvariablen und Servervariablen sowie die Umgebung dann einfach in hübsche Variablen übernommen bekommt, sicher programmieren.

Womöglich kann das irgendwie gehen. Nur mit welchen Aufwand?

Ich sitze gerade vor einem solch goldigem Projekt und versuche es zu ändern (ergänzen).

Jetzt habe ich folgende Probleme:

Dateien mit 20kb Programmtext (HTML in 'Templates'), irgendwoher tauchen Variablen auf, der Herkunft völlig unklar ist und die auch 'tainted', also vergiftet sein können. Überblick==Durchblick, denn beide sind NULL, also FALSE.

Wenn ich die Notizen zuschalte (Eine gute Idee auf einem Entwicklersystem) bekomme ich so ca. 100 nette Meldungen...)

Diese Software "läuft" nur mit:
error_reporting E_ALL & ~E_NOTICE

Mehr muss man dazu nicht sagen- oder?

Ich bin 'hell begeistert'. Meine Vorgänger sind es offenbar auch, denn ich habe gerade bemerkt, dass einer die Datenbank abfragt um einen Wert rauszuholen, der in $_SESSION[] steht. Dem ging es also so wie mir...

Also ich kotze mich hier aus und habe noch gar keine brauchbare Aussage gemacht, aber die kommt jetzt:

Leute, Leute! Wenn ihr Eure Projekte weitergebt oder selbst später mal was ändern wollt oder einfach nur mal den Server wechseln wollt (Könnt Ihr das auschließen?), dann proggt einfach saubär und lasst die Fingerchen von 'register_globals on' und schaltet den Report der Notizen ein. Auch wenn ihr für Euch selbst proggt: Ihr betrügt Euch selbst und wenn Ihr sowas verkauft, dann betrügt Ihr den Kunde.

Man kann also mit 'register_globals on' 'sicher' programmieren? Sicher ist nach meiner Meinung lediglich, dass man oder ein Nachfolger später keinen Durchblick hat... und Fehler macht.

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
  1. Hi,

    Womöglich kann das irgendwie gehen. Nur mit welchen Aufwand?

    einfach diejenigen Variablen, die Du benutzen willst, aus den Superglobalen selbst erzeugen. Wo ist das Problem? ;-)

    Mehr muss man dazu nicht sagen- oder?

    Nein. Ich verstehe Deinen Frust.

    Leute, Leute! Wenn ihr Eure Projekte weitergebt oder selbst später mal was ändern wollt oder einfach nur mal den Server wechseln wollt (Könnt Ihr das auschließen?), dann proggt einfach saubär und lasst die Fingerchen von 'register_globals on' und schaltet den Report der Notizen ein. Auch wenn ihr für Euch selbst proggt: Ihr betrügt Euch selbst und wenn Ihr sowas verkauft, dann betrügt Ihr den Kunde.

    Solange in den Köpfen der Leute Begriffe wie "URL-Variablen" rum spuken, kommen sie überhaupt nicht erst auf die Idee, dass da irgend etwas falsch sein könnte. Wenn ihre Software auf einem anderen Server nicht mehr funktio..., Verzeihung, "funzt", ist halt mit dem Server etwas nicht in Ordnung.

    Man kann also mit 'register_globals on' 'sicher' programmieren? Sicher ist nach meiner Meinung lediglich, dass man oder ein Nachfolger später keinen Durchblick hat... und Fehler macht.

    Die entsprechenden Entwickler haben von Entwicklung wenig bis keine Ahnung und sind sich dieser Probleme nicht bewusst. Dazu kommt, dass falsche Begrifflichkeiten automatisch falsche Vorstellungen erzeugen, wie beispielsweise die, dass das magische Erzeugen von Variablen beliebigen Namens aus diversen Quellen im globalen Scope eine natürliche Sache sei. Was meinst Du wohl, weshalb ich immer interveniere, wenn jemand von "URL-Variablen" o.ä. spricht?

    PHP macht es einfach, sich einen grottenschlechten Programmierstil anzueignen, weil die Dinge einfach "funzen", ohne dass sich der Entwickler darum kümmern muss, dass sie auch funktionieren. Das ist zwar nicht der einzige, aber auf jeden Fall der Hauptgrund, warum ich der festen Überzeugung bin:

    PHP ist für Anfänger ungeeignet.

    Genau wie Frontpage. Jemand, der die Dinge gelernt hat, die Probleme sowie Lösungen dafür kennt, der wird damit umgehen können. Ein Anfänger ist mit der scheinbaren Einfachheit jedoch hoffnungsfrei überfordert und produziert zwangsläufig unbrauchbare Ergebnisse.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hellihello

      PHP ist für Anfänger ungeeignet.

      Und was mach ich jetzt?

      Genau wie Frontpage.

      Aus diesem Stadium bin ich aber "lebend" oder vielleicht nur "funzend"  rausgekommen.

      frankx

      1. Hi,

        PHP ist für Anfänger ungeeignet.
        Und was mach ich jetzt?

        die Geheimnisse der Entwicklung und des Kontextes HTTP auf andere Weise erlernen.

        Genau wie Frontpage.
        Aus diesem Stadium bin ich aber "lebend" oder vielleicht nur "funzend"  rausgekommen.

        Wenn Du aus dem Stadium "Frontpage" raus gekommen bist, ist das schon mal gut :-)

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hellihello

          PHP ist für Anfänger ungeeignet.
          Und was mach ich jetzt?

          die Geheimnisse der Entwicklung und des Kontextes HTTP auf andere Weise erlernen.

          z.B.?

          Wenn Du aus dem Stadium "Frontpage" raus gekommen bist, ist das schon mal gut :-)

          ja, kommt nicht wieder vor (;-).

          frankx

    2. Hallo Freunde des gehobenen Forumsgenusses,

      PHP macht es einfach, sich einen grottenschlechten Programmierstil anzueignen, weil die Dinge einfach "funzen", ohne dass sich der Entwickler darum kümmern muss, dass sie auch funktionieren.

      PHP macht es auch schwer, Programme für alle möglichen PHP-Konfigurationen zu schreiben (MagicQuotes / register_globals), man muss immer darauf achten, dass man die Slashes wieder los wird (und dass man sie nicht zu oft entfernt).

      Gruß
      Alexander Brock

      1. Hi,

        PHP macht es auch schwer, Programme für alle möglichen PHP-Konfigurationen zu schreiben

        Verglichen mit systemübergeifenden Sprachen, wo alles absolut identisch ist? Ja.

        (MagicQuotes / register_globals), man muss immer darauf achten, dass man die Slashes wieder los wird (und dass man sie nicht zu oft entfernt).

        Naja: Einmal eine Funktion dafür geschrieben - nie wieder Probleme.

        Generell baue ich auf einem eigenen Framework auf. D.h., mir steht eine genau (nämlich von mir) definierte Umgebung an Variaben/Konstanten/Funktionen zur Verfügung, wo es mir dann absolut egal ist, auf welcher Pattform, in welcher Konfiguration und mit welcher Version das läuft.

        Bis man aber weiß, wo Fallstricke liegen, bedarf es ggf.ein wenig Erfahrung - was wiederum im Gegensatz zum Umstand steht, daß sich gerne Anfänger auf PHP stürzen, um "auf die Schnelle" etwas scheinbar brauchbares zu programmieren ...

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hellihello

    und schaltet den Report der Notizen ein. Auch wenn ihr für Euch selbst proggt

    der dann plötzlich wohl mit der neueren PHP 5 irgendwas plötzlich Warnings in der Mail-Klasse von Pear ausgespuckt hat (irgendwas mit leeren Referenzen oder so). Also gut zu wissen, was los ist. Ich habs dann aber erstmal ausgeschaltet.

    frankx

  3. Hi,

    Man kann also mit 'register_globals on' 'sicher' programmieren?

    Natürlich kann man das. Denn es ist ja, auch gerade aus Gründen der Übersichtlichkeit/Wartbarkeit geboten, daß man die Variablen, die man verwendet, auch initialisiert (und dabei ggf. gleich kommentiert).

    Wer schludern "will", kann das auch mit register_globals=0ff - fast gehupft wie gesprungen (nur das eine Mal in den Gulli, das andere Mal von der Klippe).

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!