Brauche Rat von Security-Freaks

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Brauche Rat von Security-Freaks

    Ich brauche mal Euren Rat, was den sicheren Aufbau eines PHP-Skriptes betrifft.
    Zunächst einmal grob, was ich überhaupt vorhabe:

    Ich möchte verschiedenen Leuten die Möglichkeit geben, sich per Formular auf einer Internetseite einzuloggen. (Login erfolt über eine einmalige Nummer (PersoID) + ein Passwort)
    Bei erfolgreichem Login kommt Herr X auf seine persönliche Übersichts-Seite, auf der er eine Liste mit Links zu PDF-Dokumenten sieht. Klickt er auf einen dieser Links, wird das PDF-Dokument geöffnet (klar). Die Dokumente jeder Person liegen übrigens in einem Ordner, der nach der PersoID benannt ist.
    Herr X soll auf seiner Seite aber NUR die Links zu SEINEN PDF-Dokumenten sehen, also nicht auf die Dokumente von Herr Y zugreifen können.
    Es soll auch nicht möglich sein, dass Herr X auf die Dokumente von Herr Y zugreifen kann, selbst wenn er den genauen Pfad inkl. Dateinamen der Dokumente kennt.
    Zusätzlich soll es die Möglichkeit geben, dass ein Admin jederzeit Zugriff auf ALLES hat und auch einfach neue Personen anlegen kann.

    Der grundsätzliche Aufbau des Ganzen ist mir klar. Nur bin ich mir noch nicht so ganz im Klaren darüber, was ich alles beachten muss, damit sich in mein Skript keine Sicherheitslücken einschleusen.

    Dazu kommt, dass das Skript folgende Voraussetzungen erfüllen muss:

    1. wenn möglich NICHT mySQL-basiert, auch wenn ich es hasse mit txt oder ini-Dateien rumzufummeln
    2. Login soll per HTML-Formular erfolgen (aus Layout-Gründen)
    3. einfache Wartbarkeit, d.h. einfaches Anlegen und Löschen von Accounts
    4. da das Skript auf mehreren Servern mit unterschiedlichen Konfigurationen eingesetzt werden soll, sollte es möglichst kompatibel und leicht zu installieren sein

    Jetzt meine Fragen an Euch:

    1. was schlagt Ihr mir zur Realisierung vor?
    2. wo könnten mögliche Sicherheitslücken versteckt sein?
    3. ist es überhaupt möglich, das TXT oder INI-basiert zu lösen?
    3a. wenn ja: macht das sehr viel Sinn?

    Ihr braucht mir hier keine Code-Beispiele posten - ich würde mich aber freuen, wenn Ihr mir schreiben könntet, wie Ihr an so ein "Problem" rangeht.

    Danke für Eure Tipps..

  • #2
    1. 'ne textdatei und sessions *g*
    2. unsaubere programmierung
    3. ja
    4. nein (imho)

    du musst schauen, ob du in der textdatei (eine user-pass-kombi pro zeile) einen eintrag findest der zu den angegebenen daten passt
    wenn dem so ist, hast du ja die userid


    die pdf-dateien würde ich oberhalb des webroot ablegen oder in nem .htaccess geschützten ordner

    das auslesen der dateien dann über ein php-skript (mit browser alleine geht ja nicht) in dem du die session prüfst

    beispielaufruf: download.php?file=45_dateixy.pdf
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Danke für Deine Ratschläge.

      1. das mit der TXT-Datei durchsuchen ist klar - so hatte ich mir das auch gedacht
      2. unsaubere programmierung.. genau das möchte ich ja vermeiden, indem ich zuerst hier frage bevor ich loslege
      3. ok
      4. wie gesagt halte ich auch nicht viel davon - mal sehn, vielleicht mach ichs doch auf mySQL Basis.

      Leider kann ich die Lösung "PDF-Dateien oberhalb Webroot" nicht verwenden, da ich nicht weiss, ob das bei allen Servern möglich ist (ich denke, bei manchen Hosting-Angeboten gibt es da Probleme).
      Werde also wohl die .htaccess-Lösung nehmen

      Muss ich noch irgendwelche CHMODs beachten? Wenn ja, ist es sinnvoll, diese automatisch per Skript zu setzen, oder könnte es dabei auch Probleme geben?

      Kommentar


      • #4
        wenn du nicht mit mysql arbeiten willst, wie wäre es mit sowas?

        http://de.php.net/dba

        gruss

        Kommentar


        • #5
          danke - sehr interessanter Link.
          Werde das bestimmt beim einen oder anderen Projekt mal einsetzen.

          weiß nur nicht, ob das so geeignet ist für das jetzige Projekt, da ich dann wieder nicht ganz unabhängig von der PHP-Config bin. Immerhin muss ja dann ein bestimmter DB-Handler vorliegen.

          Oder sind die Handler (z.b. gdbm) eigentlich fast überall mit drin?
          Zuletzt geändert von zzet; 05.11.2003, 19:11.

          Kommentar

          Lädt...
          X