Webseitenschutz

  • Hallo an die Experten,


    ich versuche mich langsam an das Thema Webseitenschutz heranzutasten und habe schon sehr oberflächlich (und natürlich sehr amateurhaft) mit dem ein oder anderen Versuch (auch aus der Axel DVD) schon am an dem Thema gekratzt.


    Ganz offensichtlich ist das Thema vielschichtig und deswegen habe ich mir gedacht, dass ich vielleicht hier die Experten frage, um nicht in eine falsche Richtung beim "Erlernen" zu marschieren.


    Folgende Situation habe ich aus dem Netz:


    1. Absicherung durch die .htaccess Datei:

    Dies habe ich im Netz gelesen:
    "Mit einer .htaccess Datei und einer .htpasswd Passwort-Datei lassen sich bestimmte Verzeichnisse und die darin enthaltenen Dateien (bei einem Apache-Webserver (Unix)) vor unerlaubtem Zugriff schützen."


    2. Absicherung nur durch php:

    Hier scheint es so zu sein, dass man dies ohne eine Datenbank den Zugriff steuern kann (siehe auch Axels DVD).


    3. Absicherung durch php in Kombination mit Datenbank (z.B. MYSQLi)

    Wenn ich das richtig verstehe hat man hier vermutlich mehr Möglichkeiten als unter 2.) aber muss diese auch deutlich besser absichern in der Codierung.


    In allen 3 Fällen scheint es notwendig zu sein zu "crypten". Ein Bereich, den ich noch gar nicht abgedeckt habe.


    Nun zu meinen Fragen:

    a.) Wie würdet Ihr das Thema angehen.

    b.) Welche Variante hat welche Vor- oder Nachteile?


    Danke für Kommentare der Spezialisten.


    Grüße


    olkostbe

  • Hey,


    Es gibt viele Angriffmöglichkeiten wie XSS, CSRF, Session Hijacking, SQL-Injections, Gefährlichen Code über ein Formular einschleusen und Spam-Mails. Mehr fällt mir jetzt auch nicht mehr ein. Gegen diese Angriffmethoden kann man sich aber in der Regel aufjedenfall gut schützen. Nur eine 100% Sicherheit gibt es nie.


    Ich habe hier im Forum bereits eine Thema erstellt übere sichere Programmierung in PHP, welches hier im PHP-Abteil angeheftet ist, mit Links. In diesen Links wirst du soweit die meisten Schutzmaßnahmen gegen Angriffe kennen lernen.


    Nun zu deinen Punkten:


    1.) Das ist im Prinzip das selbe wie ein Login über PHP zu erstellen. Beim Login erstellst du dann eine Session. Diese ist die Grundvorraussetzung, das der User auf die weiteren Seiten Zugriff hat. Um zu prüfen ob er Zugriff bekommt musst du bei jeder Seite als erstes überprüfen ob die Session vorhanden ist. Wenn nein wird der weitere Programmcode mit einer Mitteilung abgebrochen.


    2.) Das ist dies was ich in Punkt 1 wohl angesprochen habe.


    3.) Dort meinst du wohl ein Login, realisiert über eine Datenbank? Dort erstellst du ja auch Sessions/Cookies. Somit überprüfst du auch dort ob der User auf die Seiten Zugriff hat oder nicht. Zusätzlich kommt dort die Verwendung von Prepared Statements dazu.


    Bei Logins realisiert über die Datenbank musst du das Passwort vor dem einfügen in die Datenbank hashen. Dazu gibt es auch entsprechende Funktionen von PHP. Vor dem hashen des Passwortes kannst du diesem noch eine Zeichenkette anhängen. Warum eigentlich? Aus dem Grund weil dann eine andere Zeichenkette erstellt wird als gewöhnlich und diese nicht in sogenannten Rainbow Tabellen zu finden ist. Dazu kannst du bei jedem Login überprüfen ob der Password-Hash einen Rehash (neu Hashen) benötigt. Wenn ja dann kannst du es erneut hashen nach der Anbindung der Zeichenkette und in die Datenbank einfügen.


    Mit der htaccess Variante habe ich bisher noch keine Erfahrung. Aber ich habe sowas bereits gesehen. Dort kommt beim Seitenaufruf ein Popup wo man den Usernamen und das Passwort eintragen muss. Das sieht bei modernen Seiten meiner Meinung nach hässlich aus. Da würde ich einen anderen Weg gehen.


    Grüße,

    Stef

  • Hallo beisammen,


    bin noch beim Einlesen in das Thema Hashen mit Salz und Pfeffer. Inzwischen ist mir diese unbedingte Anwendung, bei einer Datenbankverwendung mit Einloggen, ein Muss ist, eindeutig klar. Ich bin hier noch am Lernen und Begreifen bei den Feinheiten. Das Tutorial (von Wolf) hier ist schon anspruchsvoll, aber nachvollziehbar.


    Trotzdem noch eine Frage zur reinen PHP Anwendung (oder .htaccess): Muss ich hier auch Hashen mit Salz und Pfeffer?

    Wenn ich es richtig verstehe, dann müßte der Angreifer grundsätzlich Zugriff auf den Code vom Webspace haben, um dann seinen Schabernak treiben zu können. Dann hat er aber auch grundsätzlich Zugriff auf den Hash mit Salz und Pfeffer. -- Oder bin ich da komplett auf dem Holzweg?


    Nur ein paar Gedanken von einem Anfänger.


    Grüße olkostbe

  • Hey,


    Die Server sind durch die Hoster aufjedenfall sehr geschützt und ein Angreifer hat Schwierigkeiten in den Server aufgrund der Sicherheitsmechanismen einfach so einzudringen. Dies erfordert dann aufjedenfall vom Angreifer sehr viel Erfahrung.


    Ganz ehrlich, wenn ein guter bis sehr guter Hacker einen Server hacken will dann schafft der das auch.


    Wenn es soweit kommt, bekommt es der Hoster mit und wird dir bestimmt eine Nachricht zukommen lassen. Dann musst du den Pepper ändern und eben alle User auffordern das Passwort zu ändern.


    Bei einer reinen PHP-Anwendung, wenn du das Passwort nirgends abspeicherst, kann es in Klarform da stehen. Das hashen ergibt keinen Sinn in diesem Fall, meiner Meinung nach. Erst wenn du das Passwort irgendwo speicherst muss ein Pepper angehongen werden und dies dann gehast werden.


    Grüße,

    Stef

  • Hi,


    Warum verwendest Du nicht ein bereits bestehendes PHP - Framework? Das Ganze selbst zu programmieren wird sehr viel Zeit kosten, um vieles mehr als die Suche nach einem geeigneten FW.
    Ich hab das selbst mal versucht, no way in kurzer Zeit.


    Ein Lehrer hier beim BFI hat auch so etwas im Kurs gemacht. ABER diesen Login und dessen Verwaltung würde ich nie verwenden.


    Grüße,

    Reinhard