Sicherheitsfragen zu PHP-Anwendungen auf der Webseite

Dieses Thema im Forum "Web- & File-Services" wurde erstellt von Programmer78, 10.06.2016.

  1. #1 Programmer78, 10.06.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    92
    Zustimmungen:
    1
    Hallo miteinander,

    habe eine kleine Webseite (4 Jahre statisch, keine Sicherheitsprobleme bisher) und ich frage mich, wie sicher die Verwendung von PHP auf einer Webseite ist.

    Beschäftige mich seit kurzer Zeit mit PHP (viel zu lange hinausgezögert das ganze) und möchte damit nun Funktionen hinzufügen.

    Für Apache2 gibt es ja Sicherheitsmodule, womit man php zusätzlich absichern kann. Ich glaube snort hat auch einige Filter parat um auf ungewünschte PHP-Aktionen zu reagieren (im Log).

    1. Ich habe gelesen, dass Formulareingaben "gefiltert" werden müssen, damit kein Code eingeschleust werden kann. Soweit klar. Gibt es, wie bei der Shellshock-Lücke z.B., ähnliche Varianten um php-Code einzuschleusen? Ich nehme derzeit (fälschlicher Weise bestimmt) gerade nur das Formular als einzige Schnittstelle zum System an.

    2. Wenn Eingaben gefiltert werden und alphamumerisch bleibt über und wird per post oder get übertragen, kann dort nicht schon Code eingetragen werden, der bereits den Filter stört?

    3. Das wären schon alle Ideen die ich hätte, gibt es sonst noch PHP-Angriffe, die ich absichern muss?

    Bemerkung: Ich verwende kein CMS/PHP bisher, alles html mit css. Keine Schnittstellen zum System, solange der Apache sicher ist.

    Über ein paar Stichwörter wäre ich schon froh. Vielleicht eine Webseite, die sich nur damit befasst. Die Seiten die ich gefunden habe, reißen das Thema nur ganz kurz an. Nichts tiefgründiges.

    Danke

    Gruß

    P.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Pauschal ässt sich das nicht beantworten - es kommt immer drauf an, was du programmierst.

    Grundsätzlich gilt aber: Alle externen Daten (also alles, was Du nicht selbst 100% unter Kontrolle hast) sind als potentiell böse zu betrachten und entsprechend zu behandeln.

    Daß man meist nur kurze Abrisse findet liegt daran, daß sich zu jedem einzelnen Punkt komplette Buchreihen schreiben lassen. Ob das nun SQL-Injection, Code-Injection, XSRF , XSS, und so weiter ist...
    einen groben Überblich über so alles mögliche bietet z.B.
    http://www.heise.de/developer/artik...Web-Application-Security-Project-1028905.html
    https://www.cccs.de/data/events/200801-websecurity/cccs-web-security.pdf
    https://www.cccs.de/data/events/201504-hack-your-own-website/HackYourOwnWebsite.pdf

    ... und noch vieles mehr. Es ist ein komplexes Feld und "das lernt man nicht eben so"
     
  4. #3 Programmer78, 10.06.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    92
    Zustimmungen:
    1
    Danke marce,

    das hilft erstmal weiter. Tatsächlich sehr komplex, da hast du nicht zu viel versprochen. Sobald die Webseite dynamisch wird, kann man ja schon fast einen Web-Sicherheitsmitarbeiter einstellen. Das owasp Projekt ist nicht schlecht, sogar mit Testmöglichkeiten. Tja da rückt mein PHP-Projekt erstmal wieder in weiter Ferne ;)
     
  5. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    ach, übertreib mal nicht.

    Ja, es ist komplex - aber wenn man sich beim Entwickeln direkt die Gedanken macht und sich zuvor mit den einzelnen Möglichkeiten und Methoden der Sprache beschäftigt hat ist man zumindest auf einem guten Weg. Es trifft ja auch nicht alles überall zu - ohne DB-Anbindung z.B. musst Du Dir über SQL-Injection erst mal keine Gedanken machen.

    Wobei eine gute Eingabevalidierung erst schon mal das meiste von vornherein erledigt - dann muss man sich nur noch um die Logik-Teile kümmern :-)
     
  6. #5 florian0285, 10.06.2016
    florian0285

    florian0285 Eroberer

    Dabei seit:
    10.06.2016
    Beiträge:
    71
    Zustimmungen:
    0
    hallo

    zu komplex sollte man das auch nicht sehen und sich nicht abschrecken lassen ;)
    Du weißt ja welchen Input dein Code erwartet, grenze diesen ein und alles andere = böse und wird gefiltert :)
     
  7. #6 Programmer78, 11.06.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    92
    Zustimmungen:
    1
    ok das mit den Sicherheitsmitarbeiter klingt wirklich übertrieben. War aber eher ironisch gemeint.

    Für mich ist halt nur der Sicherheitsaspekt ganz wichtig. Was nützt es, wenn Funktionen auf der Webseite funktionieren aber man irgendwann später eine Email vom Hoster erhält, dass von dem Server Angriffe ausgehen und die Webseite erstmal vom Netz genommen ist?

    Ich habe jetzt ja gute Hinweise bekommen und ich werde mich da mal hintersetzen. Vielleicht kann man den sql-kram und den Webserver ja noch in eine chroot Umgebung packen, so dass, falls doch, nicht so leicht auf das System zugegriffen werden kann. Möglichkeiten gibt es bestimmt.
     
  8. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Systemnahe Exploits sind bei SQL-Injection nicht das primäre Problem. Eher so Dinge wie Daten abgreifen, Defacement, ...
    Chroots helfen da übrigens wenig bis gar nicht.
     
  9. #8 florian0285, 11.06.2016
    florian0285

    florian0285 Eroberer

    Dabei seit:
    10.06.2016
    Beiträge:
    71
    Zustimmungen:
    0
    Naja, wenn ich php code mit z. B. into outfile in mein www root einschleusen kann reicht das um befehle auszuführen und somit nen reverse-shell-one-liner einzuschleusen. Ich würde nicht paranoid werden, aber auch nichts vernachlässifen :)
     
  10. #9 Programmer78, 12.06.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    92
    Zustimmungen:
    1
    Meiner Meinung nach kann man das System schon ganz gut absichern, nachdem was ich gelesen habe.

    Vieles kann man schon in der php.ini unterbinden. Mein Vorteil ist es, dass ich die Webseite nicht über ein CMS verwalte. So kann man viele php-Befehle einfach verbieten (fopen, readfile etc). Den Rest an Sicherheit erlangt man dann mit guter Programmierung der php-Skripte (für mich noch in weiter Ferne).

    Da ich bestimmt 10 Stunden im Netz gesucht habe, mir alles aber nicht vollständig erscheint, habe ich mir mal ein Buch zum Thema bestellt, speziell PHP-Sicherheit, ist wohl gerade neu rausgekommen. 60 Euro, aber naja, Fachbücher sind immer teuer. Kann ich leider erst nächsten Sonnabend abholen. Bin schon gespannt.
     
    hellfire gefällt das.
  11. #10 florian0285, 12.06.2016
    florian0285

    florian0285 Eroberer

    Dabei seit:
    10.06.2016
    Beiträge:
    71
    Zustimmungen:
    0
    Dann gib mal Feedback zu dem Buch, wenn du es gelesen hast ;)
    Was mir noch einfällt, du musst das Rad nicht neu erfinden und kannst auf vorgefertigte Klassen zur input validation zurückgreifen z. B. GUMP. Ob das was taugt weiß ich nicht, habs auch grad nur gegoogelt :D
     
  12. #11 Programmer78, 18.06.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    92
    Zustimmungen:
    1
    Das Buch ist da! Das Buch wurde on Demand gestern gedruckt und gefertigt. Tja, leider ein Fehlgriff.

    Hatte das Buch im Buchladen ausgewählt. Eine schöne Übersicht hatten sie, viele viele Bücher zu Php etc. Buchtitel: Webservices mit PHP - Securityaspekte. Klingt gut dachte ich, genau das was ich suche.

    Den Klappentext auf der Rückseite habe ich mir leider jetzt erst durchgelesen. Zum Schluss heisst es: "In diesem Buch wird spezell auf die Abwicklung des Datenaustauschs zwischen Webservern mittels PHP eingegangen, und wie es um die Sicherheit der Daten bestellt ist."

    Das ist leider genau daneben. Habe das Buch jetzt noch nicht ausgepackt aber die wollen auf SOAP usw hinaus.

    Habe jetzt auch mal bei Ama**n geguckt und es gibt viele alte Bücher, auch viele mit schlechten Bewertungen. Das beste ist jedoch
    Einstieg in PHP 5.6 und MySQL 5.6 für Prog.-Anfänger geeignet, welches aber sehr wenig auf Sicherheit eingeht und PHP 7 und MySQL: Von den Grundlagen bis zur professionellen Programmierung. Wobei ich lieber noch mit php5 arbeiten würde, obwohl es langsamer sein soll.

    Kann sonst noch jemand ein Buch zu PHP und Sicherheit empfehlen? Ich möchte eigentlich nur eine Suche in eigener Datenbank per php realisieren. Später vielleicht ein Kontaktformular. Dazu suche ich Sicherheitshinweise. Am besten ein Buch.
     
  13. SiS

    SiS Routinier

    Dabei seit:
    12.02.2007
    Beiträge:
    318
    Zustimmungen:
    0
    Muss es denn unbedingt PHP sein? Die vielen Ausnahmen und Sonderfälle machen PHP meiner Meinung nach eher ungeeignet für Anfänger, gerade wenn man auf Sicherheit Wert legt.

    Konkret würde ich eher zu einem Framework wie Django raten.
    Damit hast du nicht nur weniger zutun und eine saubere Grundlage, das Ganze hat auch eine hohe Verbreitung und wird daher ausführlich getestet.
    Die Chance, dass du dir bei sicherheitskritischen Aspekten in den Fuß schießt, dürfte damit sehr viel niedriger sein.
    Gerade auch, da du noch neu in der Materie ist.

    Ein paar Sicherheitshinweise zu Django findest du hier:
    https://docs.djangoproject.com/en/1.9/topics/security/
    http://www.djangobook.com/en/2.0/chapter20.html
     
  14. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Denkst Du ernsthaft, die Wahl der Programmiersprache ändert etwas an der Grundthematik? Vor allem aus der Sicht des TE?

    Ich kenne seinen Background und seinen Wissensumfang nicht - sollte der im Bereich Python aber genau so weit sein wie im Bereich php - naja, es ist egal, ob Du Dir mit einer Schrotflinte oder eine Uzzi in's Bein schießt. Und nein, nur durch erwähnen des Wortes "Framework" wird nichts besser, man muss auch damit umgehen können und auch dazu muss man programmieren können und die interne von Sprache und Framework verstanden haben.

    Zudem ist die Anzahl der Hoster, die von sich aus Python in Webhostingpaketen unterstützen auch eher beschränkt...
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. SiS

    SiS Routinier

    Dabei seit:
    12.02.2007
    Beiträge:
    318
    Zustimmungen:
    0
    Sicher, wenn man Python ohne Framework verwendet stimmt das. Deswegen habe ich auch Django und nicht Python erwähnt. Mag sein, dass es für PHP vergleichbare Frameworks gibt, aber da bin ich nicht mehr auf dem Laufenden.

    Die Sache ist aber, dass ein vernünftiges Framework den Entwickler schon in die richtige Richtung lenkt.
    Django nimmt einem viele sicherheitskritische Dinge bereits ab die man ohne Framework als Einsteiger leicht vergessen/übersehen/schlecht implementieren würde.
    SQL-Injections? Keine Gefahr, solange man nicht auf die Idee kommt RAW-Queries zu nutzen (braucht man fast nie).
    CSRF-Protection? Die entsprechende Middleware ist in der Standard-Konfiguration bereits aktiviert. Wenn man die nicht per Hand deaktiviert, kann man sie also auch nicht vergessen.
    Nur um mal zwei Beispiele zu nennen.
    Außerdem sind die Sicherheitssysteme gut erprobt und untersucht.

    Da hast Du natürlich recht, aber da der TE im Eingangspost von Apache-Konfiguration und zusätzlichen PHP-Modulen sprach, war ich jetzt einfach davon ausgegangen, dass er den Webserver selber hostet.


    Natürlich kann man das ganze auch mit PHP ohne Frameworks umsetzen. Dabei keine Sicherheitslücken aufzureißen ist IMHO aber deutlich schwieriger.
     
  17. #15 florian0285, 20.06.2016
    florian0285

    florian0285 Eroberer

    Dabei seit:
    10.06.2016
    Beiträge:
    71
    Zustimmungen:
    0
    Auch wenn es vernünftige Frameworks gibt, sollte man sich doch mit dem Thema beschäftigen und das mal nackt programmiert haben. Blind einem Framework zu vertrauen ist meiner Meinung auch nicht der richtige Weg. Das stumpft das Bewusstsein erheblich ab. Soll aber nicht heißen, dass ich jetzt davon abrate ;)

    Wie wärs denn mit sowas?

    PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren

    Schon bei OWASP reingeschaut?
     
Thema:

Sicherheitsfragen zu PHP-Anwendungen auf der Webseite