?
deetee schrieb:
ich nenn dich einfach mal y, dein Name ist nicht schreibbar
Immer doch
deetee schrieb:
Du siehst das sehr eng mit dem Sicherheitsrisiko register_globals ON, denn wenn ein manipulierter URL String schon soweit durch das Skript gekommen ist, dass auch noch der richtige Variablenname gefunden wurde für einen Angriff, dann ist die Programmierung ansich schon nicht sicher genug und zwar in wichtigeren und relevanteren Punkten als die des rg ON Risikos.
Diesen Teil deines Posts verstehe ich nicht ganz. Ist Register Globals aktiviert, so wird die Variable direkt in den globalen Namespace übernommen. Eine URL wie ./index.php?argument=badcode führt somit zur Registration der Variablen $argument mit dem Inhalt 'badcode'. Wenn du die Variable $argument nun in deinem Skript nutzt, ohne sie vorher deklariert zu haben, enthält sie den Standardwert 'badcode', welcher im Skript verwendet wird. Das erzähle ich nun nicht, weil ich glaubte, du würdest das nicht wissen; aber in dem beschriebenen Fall ist die Verwendung der nicht initialisierten Variablen $argument schlichtweg grob fahrlässig. In dem Moment, in dem ein Angreifer dies ausnutzt, ist dein Code konterminiert; das ist Fakt! Und ein Angreifer kann durchaus in den Besitz deines Quellcodes kommen. Einerseits, da viele Projekte in PHP Open Source sind, andererseits, z.B. durch eine im kritischen Fall nur Sekundenbruchteile andauernde Fehlkonfiguration des Webservers.
Sicher kann man - so wie es z.B. phpBB macht - einfach alle von Register Globals registrierten Variablen wieder unset()en. Das wären dann die von dir angesprochenen "anderen Maßnahmen", an denen es mangelte.
deetee schrieb:
mich würde es wundern, wenn du mir ein PHP Programm nennen kannst, welches nach deinen strengen Maßstäben programmiert ist. Sind es denn deine eigenen?
Meine Eigenen, in der Tat. Ich bin bisher ehrlich gesagt noch nie in die Situation gekommen, eine Variable nicht vor ihrer Verwendung deklarieren zu müssen; und sei es nur, um ihr einen Startwert zuzuweisen, sinngemäß wie folgt:
$pageCount = ceil($entryCount / $entriesPerPage);
deetee schrieb:
Also PHP ist wie es ist, und man sollte diesen Aspekt zu seinem Vorteil nutzen und weniger streng eben programmieren, wie es andere Sprachen einem vorschreiben.
Ich empfinde es nicht als Nachteil, ein wenig auf die subjektive Sauberkeit und somit die Deklaration von Variablen zu achten; siehe meinen obigen Beitrag.
Und ich empfinde es nicht als Vorteil, Variablen zu verwenden, die offenkundig aus dem "Nichts" erscheinen. Es ist ja nicht so, als würde ich den Code einige Monate später vielleicht einmal nicht mehr so klar vor Augen haben, dass ich sofort weiß, wo welche Variable erstmalig benutzt wird. Und es ist ja auch nicht so, als würde ich ausschließlich selbst meinen Code sehen.
Deine Einstellung halte ich nicht für sonderlich pragmatisch, aber jedem das Seine
deetee schrieb:
Denn wenn man die relevanten Sicherheitsmechanismen in PHP einsetzt, dann hat man auch dieses Problem im Griff.
Gut, dann bin ich zu paranoid für PHP. Warum wohl?