Ankündigung

Einklappen
Keine Ankündigung bisher.

Direkten Zugriff auf Datenbank verhindern

Einklappen

Neue Werbung 2019

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

  • Direkten Zugriff auf Datenbank verhindern

    Hallo,

    ich habe hier das Forum durchsucht, nur leider nicht die passende Lösung gefunden, so dass ich doch die Frage stellen möchte:
    Ist es möglich, dass der Zugriff auf eine Datenbank ID verhindert wird? Ich habe eine Homepage, in der Daten aus der Datenbank ausgelesen werden. Wenn eine "öffentliche Person" hinkommt, wird nur ein Teil als Liste ausgegeben, im gegensatz zu denen die sich einloggen können. Wenn der Benutzer über die normale Seitenstrucktur auf die Seite zugreift kommt er von:
    http://www.testmich.de/arbeiten/infos/index.php wo dann eine Liste mit einträgen aus der Datenbank erscheint. Klickt er einen Eintrag an, kommt er auf http://www.testmich.de/arbeiten/infos/liste.php?id=1 . Nun kann er hinter der id= die Nummer nach belieben verändern und dadruch auch auf Einträge aus der Datenbank zugreifen, die er nicht sehen sollte. Wie kann ich am einfachsten dies unterbinden? Ich dachte dass dann eine leere Seite erscheint mit "Zugriff verweigert. Um auf die Liste zurückzukehren klicken sie bitte hier." Und bei "hier" wird dann auf meine vorherige Seite verwiesen.
    Könnte mir da jemand helfen?
    Danke im Voraus.
    heyho

  • #2
    Du musst eben einfach überprüfen ob der Benutzer das Recht hat diese Seite aufzurufen.... dafür gibt es 100erte Möglichkeiten.

    Eine andere Möglichkeit wäre es statt der ID die einfach hochgezählt wird (ich nehme an es ist eine auto_increment-Spalte) einen zufälligen String als Schlüssel zu nehmen.... Dann sehen Links auf die Liste so aus: links.php?id=c4ca4238a0b923820dcc509a6f75849b (in dem fal ist das ein md5-hash...). So kann der Nutzer nicht einfach die nächste ID "erraten".


    Aber es kommt ganz darauf an was du wirklich machen willst ... das konnte ich aus deinem Posting noch nicht so ganz rauslesen.
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      Hallo agrajag
      Du hast es richtig erraten, es ist die auto_increment Spalte, deren ID ausgegeben wird. Der Wunsch ist, dass diese sichtbar bleibt.
      Könntest du mir zu deinem ersten Vorschlag mit der Benutzerüberprüfung ein Beispiel geben wie das aussehen könnte? Ich verwende wohl den falschen Suchbegriff, weil ich hier nichts dazu finden kann

      Gruß

      Kommentar


      • #4
        Formulier doch erstmal in Worten was genau du machen möchtest. Danach ist es oft ganz einfach das in Code zu gießen

        Du hast also schone in Login-System? Sessionbasiert oder wie fragst du ab ob jemand eingeloggt ist? Nach welcher Logik wird denn die Liste von der du redest ausgegeben?

        Im Prinzip musst du eben einfach nur irgendwie überprüfen ob der entsprechende datenbankeintrag von allen oder nur von eingeloggten Usern gesehen werden darf...

        Das könnte beispielsweise irgendwie so aussehen:
        Code:
        <?php 
        // requrie_login kommt aus der DB 
        if($row['require_login'] =="yes" AND !isset($_SESSION['logged_in']) {
        die('Du musst dich erst einloggen...'); }
        ?>
        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

        Kommentar


        • #5
          Hallo agrajag,

          mein Wunsch in Worten ausgedrückt:
          Ein Besucher der Homepage, der keinen Login hat, soll nicht die Möglichkeit haben direkten zugriff auf die Einträge der Datenbank zu bekommen, wenn er eine ID kennt. Ich möchte, dass ihm dann eine Fehlermeldung kommt, oder er direkt auf eine bestimmte Seite weitergeleitet wird.

          Das Login ist nicht session basiert. Beim Login wird geprüft, ob der Benutzername in der Datenbanktabelle "login" vorhanden ist und welche Zugriffsrechte er hat. Dementsprechend bekommt er Zugriff auf Teilbereiche der Homepage.

          Die Liste wird aus den Einträgen aus der Datenbanktabelle "arbeiten" ausgelesen und dann noch geprüft, ob z.b. das Datum älter ist als ein Jahr oder nicht, und wenn ja, dann wird dieser Datensatz nicht mehr angezeigt.

          Hoffe, so ist es etwas verständlicher.
          Danke schon im Voraus für deine Hilfe.

          Gruß

          Kommentar


          • #6
            Zitat von heyho Beitrag anzeigen
            Dementsprechend bekommt er Zugriff auf Teilbereiche der Homepage.
            Wie und wo wird dieser Zugriff (diese Zuriffsrechte) gespeichert, wenn das login nicht session basiert ist. Woher "weiß" das nächste Skript beim nächsten Aufruf von diesen Rechten? Wenn es nicht von den Rechten weiß, kannst Du unregistrierte Benutzer nicht von registrierten unterscheiden. Vielleicht solltest Du doch ein session basiertes login verwenden.

            Kommentar


            • #7
              Ich muss mich korrigieren. Der Login läuft bereits über eine Session.

              Kommentar


              • #8
                Na dann hat Dir ja agrajag schon eine mögliche Vorgehensweise erklärt.

                Kommentar

                Lädt...
                X