Ankündigung

Einklappen
Keine Ankündigung bisher.

Rechteverwaltung

Einklappen

Neue Werbung 2019

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

  • Rechteverwaltung

    Guten Morgen zusammen,

    ich bin gerade dabei ein Rechtesystem zu erstellen, klappt auch bis jetzt alles ganz gut, bis auf die Administration. Ich wollte es so lösen dass man die Benutzerrechte einfach zwischen 2 Listenfeldern verschieden kann.

    In der Datenbank speicher ich jeweils eine 0 oder eine 1 wenn jemand die Rechte besitzt bzw. nicht besitzt.

    Mein Problem ist nun dass ich keine Lösung sehen wie ich die verschiedenen Rechte in die LIsten einsortieren bzw. aufteile und wie ich sie dann beim senden auseinanderhalten soll.

    Bis jetzt habe ich auch noch kein Codebeispiel da ich einfach nicht weiß wie ich anfangen soll. Wär super wenn mir hier jemand nen Tip oder nen Lösungsansatz geben könnten.

    Grüßle
    duderino


  • #2
    Wie hälst Du sie denn in dem Teil, den Du mit "klappt auch bis jetzt alles ganz gut" bezeichnest, auseinander?

    Kommentar


    • #3
      Wie wäre es denn, wenn du sie per Sessions oder Cookies auseinanderhälst.
      Du schreibst einfach einen Vergleich, wenn in der Seesion oder im Cookie die
      User-Einstufung auf 0 gesetzt ist, soll er den "normalen" Bereich anzeigen, und wen die Einstufung auf 1 gesetzt ist, soll er den Admin-Bereich anzeigen.

      Kommentar


      • #4
        Wozu 2 Select-Felder. Mach doch ein Multiple-Feld, in dem halt markiert ist wofür der User Rechte bekommt/hat und der Rest eben nicht?

        Code:
        <select multiple>

        Kommentar


        • #5
          Zitat von Brease
          Wie wäre es denn, wenn du sie per Sessions oder Cookies auseinanderhälst.
          Du schreibst einfach einen Vergleich, wenn in der Seesion oder im Cookie die
          User-Einstufung auf 0 gesetzt ist, soll er den "normalen" Bereich anzeigen, und wen die Einstufung auf 1 gesetzt ist, soll er den Admin-Bereich anzeigen.
          Cookies liegen beim User, er hätte also die Möglichkeit, es zu verändern und sich dadurch mehr Rechte zu erschleichen. Session ist ok, denn die Session liegt auf dem Server.

          Kommentar


          • #6
            Hab das Problem gelöst. Das Problem mit den beiden Form-Feldern konnte ich leider nicht verhindern, da ich für das hin und her schieben von den Rechten ein Smarty Plugin benutze.

            Ich hab jetzt aber in der Datenbank 2 tabellen, Einmal Rechte (id, name) und Benutzerrechte (benutzer_id, rechte_id). Wenn der Benutzer etwas an den Rechten verändert, lasse ich eine Schleife durchlaufen die die Rechte ID und die Benutzer ID in die Tabelle Benutzerrechte einfügt.

            In meiner Klasse prüfe ich nun einfach ob eine Session existiert, ob diese mit der IP des Benutzers übereinstimmt und wenn ja, dann ruf ich aus der Tabelle Benutzerrechte alle Spalten mit der entsprechenden Benutzer id und der rechte id auf. Wenn 1 dann hat er Zugriff wenn nichts bei rauskommt wird er weitergeleitet.

            War eigentlich garnicht so schwer aber an dem Tag hatte ich irgendwie ne sperre im Schädel. Am nächsten Tag flutschte es nur so

            Kommentar


            • #7
              IP des Benutzers könnte über Proxy schieflaufen...

              Kommentar


              • #8
                Ja aber es ist doch eigentlich der beste Schutz vor dem Klau oder der unwissentlichen Weitergabe eines Links mit Session id.

                Bin natürlich auch für Verbesserungen oder Tips offen. Wenn du ne sichere Methode hast, dann raus damit

                Kommentar


                • #9
                  Die Weitergabe der SessionId verhindest du mit dem Einsatz von Cookies. Das kann PHP-Sessions automatisch ermitteln, ob ein Cookie oder die URL für die Übermittlung verwendet wird. Vorzugsweise wird bei entsprechender Konfiguration ein Cookie verwendet, wenn es der Browser des Users zulässt.

                  Ich nehme allerdings Abstand von Cookies, da früher so die Session-Engine nicht zuverlässig war und deshalb ab und zu nicht funktionierte. Wie es aktuell ist, weiß ich nicht.

                  Kommentar


                  • #10
                    Ich biete dem User auch an einen Cookie zu setzen. Im Cookie speicher ich dann das verschlüsselte Passwort und die Benutzer ID. Am Anfang wird dann geprüft ob ein Cookie besteht.

                    Wenn ja, meldet das Script den User automatisch mit den Daten im Cookie an. Ich weiß dass ist nicht das sicherste, aber viele Nutzer wollen auf den Komfort von Cookies nicht verzichten.

                    Standartmäßig ist das Häkchen bei "Cookie setzen" deaktiviert. Aber man muss die Möglichkeit meiner Meinung nach offen lassen und dem Nutzer überlassen.

                    Kommentar


                    • #11
                      Das wäre eine Sicherheitslücke, denn jeder könnte das Passwort lesen und solange verwenden, bis der Benutzer das Password ändert. Wer macht das schon. Du solltest einen generierten md5-Hash o.ä. verwenden und diesen bei jedem Besuch des Benutzers austauschen. Den schreibst du zum Benutzer in die Tabelle und in das Cookie. Der Vorteil ist, dass Spione nach jedem weiteren Login wieder in das Cookie schauen müssten.

                      Kommentar


                      • #12
                        Ja, das ist ne gute Idee. Das werde ich auf jedenfall so in das Script einbauen. Hast vielleicht noch ein paar nützliche Tips zum Theme Sicherheit in Sessions und Cookies.

                        Kommentar


                        • #13
                          Gib dem Cookie bzw. dem Hash eine begrenzte Lebensdauer.

                          Wenn du ganz sichergehen willst, schaff diesen Autologin ab

                          Kommentar


                          • #14
                            Wenn du Session-Cookies benutzt musst du beachten, dass Angreifer womöglich über eingebettete Elemente Requests auslösen können, die dann innerhalb der Session des Betrachters ausgeführt werden. Beispiel: Du schickst einem Moderator hier via PM ein Bild, das als Quellenangabe den Befehl für "lösche den Thread xyz" enthält. Dieser öffnet die Nachricht, das "Bild" wird nachgeladen, dabei der Keks übermittelt und die Aktion gelingt.

                            Also: Challenge-ID's einbauen, falls ein solcher Angriff realistisch ist.

                            Basti

                            Kommentar

                            Lädt...
                            X