Sicherheit mit PHP
Fragezeichen
- meinung
0 Ashura0 Fabian St.0 Tom0 Fragezeichen0 Tom
0 wahsaga-4 Fragezeichen
Hallo Forum
Ich habe folgende Frage, die ich gerne mal den Profis hier im Forum stellen möchte:
Wie sieht es eigentlich mit dem Schutz vor ungewünschten Zugriffen (aller Art) im Zusammenhang mit Programmierung in PHP aus? Gibt es gewisse Todsünden (im Code oder sonst wo), die auf keinen Fall gemacht werden dürfen? Wie kann ich mich als Programmierer vor Schadenersatzforderung irgendwelcher Art schützen? Gib es Standards?
Wie seht Ihr das?
Danke für Eure Meinungen.
Fragezeichen
Hallo Fragezeichen.
Wie sieht es eigentlich mit dem Schutz vor ungewünschten Zugriffen (aller Art) im Zusammenhang mit Programmierung in PHP aus?
Ich finde, dass das entsprechende Kapitel im PHP.net Handbuch einiges aussagt.
Gruß, Ashura
Hi!
Wie sieht es eigentlich mit dem Schutz vor ungewünschten Zugriffen (aller Art) im Zusammenhang mit Programmierung in PHP aus? Gibt es gewisse Todsünden (im Code oder sonst wo), die auf keinen Fall gemacht werden dürfen? Wie kann ich mich als Programmierer vor Schadenersatzforderung irgendwelcher Art schützen? Gib es Standards?
Da gibt es einige, wie z.B. register_globals=On, keine Initialisierung von Variablen vor ihrer Verwendung, keine Überprüfung von User-Eingaben, SQL-Injections, etc.
Für den Anfang sollten http://php-faq.de/ch/ch-security.html und http://www.php.net/security-note.php ganz interessant sein.
Grüße,
Fabian St.
Hello,
einer der schlimmsten Fehler ist wohl eine fehlende Translation eines vom User eingebbaren Dateipfades. Beliebtes Beispiel hierfür ist:
Uafruf durch
domain.tld/index.php?action=hallo_world.php
in der index.php
...
include ($_GET['action']);
...
Da hilft dann auch register_globals = off nichts mehr.
Es gibt dutzende von Spielarten für diese Lücke, die sich aber bei genauerer Betrachtung immer wieder auf diesen vereinfachten Fall reduzieren lassen.
Auch wenn die Endung erst innerhalb des Scriptes angehängt wird, ist dies kein Schutz, da meistens die fopen als Wrapper für die Socket-Funktionen zugelassen ist, und es somit leicht möglich ist, dem Script jede beliebige PHP-Datei von einem externen Server unterzujubeln. Bevor hier jetzt jemand "blökt", dass diese dann ja schließlich auf dem externen Server geparst würde, soll er bitte nochmal nachdenken;-)) Danke.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom
Danke für Deine Antwort.
Ich hätte da nun eine Folgefrage:
Kann das Problem auch dann auftauchen, wenn keine Datei eingebunden wird, sondern z.B. folgendes:
domain.tld/index.php?action=template1
('template1' als Inhalt der Variable 'action' -> ist keine Datei)
Gruss
Fragezeichen
Uafruf durch
domain.tld/index.php?action=hallo_world.php
in der index.php
...
include ($_GET['action']);
...
Hello,
Hi Tom
Danke für Deine Antwort.
Ich hätte da nun eine Folgefrage:
Kann das Problem auch dann auftauchen, wenn keine Datei eingebunden wird, sondern z.B. folgendes:
domain.tld/index.php?action=template1
('template1' als Inhalt der Variable 'action' -> ist keine Datei)
Es kommt doch darauf an, was Du dann mit $action (oder eben $_GET['action']) machst. Wenn Du das ungeprüft an eval() oder System() oder Exec() ... übergibst, ist es genauso eine Lücke, als wenn Du einen Pfad/Dateinamen ungeprüft an include() übergibst.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
hi,
Wie sieht es eigentlich mit dem Schutz vor ungewünschten Zugriffen (aller Art) im Zusammenhang mit Programmierung in PHP aus? Gibt es gewisse Todsünden (im Code oder sonst wo), die auf keinen Fall gemacht werden dürfen?
wenn du darüber noch so gut wie gar nichts weißt - dann sollte sich die frage
Wie kann ich mich als Programmierer vor Schadenersatzforderung irgendwelcher Art schützen?
doch wohl noch gar nicht stellen.
gruß,
wahsaga
Hi wahsaga
Wenn Du kein konstruktives Feedback liefern kannst oder willst, dann lass' es doch besser sein.
Den anderen danke ich auf jeden Fall sehr für ihren Input.
Gruss
Fragezeichen