durch Array mit url, auf Herkunft prüfen...

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

  • durch Array mit url, auf Herkunft prüfen...

    hey!
    Ich möchte meine Seite so sichern, dass jede url überprüft wird, ob sie erlaubt ist, wenn nicht, dann soll "stop" ausgegeben werden...

    PHP-Code:
    // erlaubte Urls
    $url "http://www.meinserver.de/login/index.php";
    $ref_index = array("$url""$url?action=forum""$url?action=statistik""$url?action=uploads""$url?action=schule""$url?action=emailpostfach");
    $count_ref count($ref_index);
    for(
    $r 0$r <= $count_ref$r++) {
      if(
    $HTTP_REFERER != "$ref_index[$r]") {
        
    $ref_check "stop";
      }
      else {
        
    $ref_check "ok";
      }

    Also der Benutzer kommt auf eine index seite auf der er die links zu den einzelnen teilen hat.
    Die Teile sind über ?action= ansteuerbar...

    sobald aber jemand von einer url kommt, die nicht erlaubt ist (?action=irgendwas) soll "stop" ausgegeben werden.
    Immer wenn die URL erlaubt ist, soll "ok" ausgegeben werden...

    Das script ist so aufgebaut:
    in dem Array sind die URLs welche erlaubt sein sollen
    Sie werden gezählt.
    Dann eine For schleife, zählt $r bis zur letzten url runter.
    Wenn die Herkunfe $HTTP_REFERER ungleich der angegebenen URLs ist, soll "stop" kommen, wenn alles erlaubt, OK

    Warum gibts mein Script denn immer STOP aus? auch wenn die url erlaubt ist und stimmt?

    darf ich vielleicht so einen wert "stop" oder "ok" in einer For schleife nicht setzen lassen?

    theoretisch würde ja, wenn die 2te url erlaubt ist, der wert auf ok gesetzt werden, der dritte ist aber wieder nicht erlaubt, deswegen wieder auf stop
    und somit würde das ganze nur funzen, wenn die letzte url in der liste erlaubt wurde...

    geht das ganze auch irgendwie anders?
    ich weiß nicht weiter...

    Danke für jede Hilfe im Voraus!

    MFG Israel's Son

  • #2
    HTTP_REFERER abfragen ist unsicher, da nicht zwingend was enthält.
    Besser z.B. mit Session vorher einen Wert speichern und auf der nächsten Seite darauf prüfen.

    Kommentar


    • #3
      die idee ist schon ok, nur solltest du vielleicht nicht den referer checken (s. asp2php's post), weil es ja hieße, der benutzer war schon auf der page und hat mit seiner bösen url alles kaputtgemacht.

      kurz vor der stelle, wo du $_GET["action"] auswertest, solltest du den wert mal mit den erlaubten sachen vergleichen. ansonsten kann der user dazuschreiben, was er will, die anderen variablen gelangen nicht in den code (s. register globals = off)

      Kommentar


      • #4
        Besser z.B. mit Session vorher einen Wert speichern und auf der nächsten Seite darauf prüfen.
        ok, aber wie soll das funktionieren?

        soll ich den wert als register global (?action=bereich&wert=xyz)

        zum bereich mitschicken und den dann mit if(wert == xyz)... abfragen?
        oder wie?

        aber das soll ja grade nicht, denn dann könnte jeder in seinem verlauf nachschauen und dann den wert sozusagen rausfinden und selber an die url hängen und somit unerlaubt auf die Seite zugreifen...

        versteht ihr wo mein Problem ist?

        Der Bereich wird ursprünglich mit Passwort geschützt, ich könnte nun jeden ?action=... bereich erneut nach dem PW fragen, welches ich auch als register global mitgeschickt habe, aber dann ist mir das zu riskant, denn selbst wenn das pw verschlüsselt ist, reicht ja die codierte Version als Passwort wenn man es richtig an dir url anhängt...

        oder meinst du das mit dem wert abfragen ganz anders?

        kannst du mir ein bsp geben?

        Danke im Voraus!

        -------------------

        Mir fällt grade etwas Interessantes ein:

        was wäre, wenn ich an die URL bei jedem link das aktuelle Datum + Uhrzeit als Timestamp mitschicken würde? Da es ja dieselbe Datei ist, die dann das Datum checken würde, dürfte doch keine Verzögerung sein oder?

        Vielleicht muss ich noch eine kleine Toleranz von +5 Sekunden geben.
        Wenn dann das aktuelle Datum + Uhrzeit nicht mit dem Timestamp Datum der url übereinstimmt, wird auf die Login - Seite verwiese, sonst zugriff gewährt...

        Vielleicht noch den Timestamp verschlüsseln, und vor der if abfrage entschlüsseln...

        Was meint ihr? Würde das machbar sein und den Zweck erfüllen den ich suche?



        MFG Israel's Son
        Zuletzt geändert von israelsson; 01.12.2004, 23:52.

        Kommentar


        • #5
          Original geschrieben von israelsson
          [skipped]
          versteht ihr wo mein Problem ist?
          so gerade noch
          Der Bereich wird ursprünglich mit Passwort geschützt, ich könnte nun jeden ?action=... bereich erneut nach dem PW fragen,
          unnötig
          welches ich auch als register global mitgeschickt habe, aber dann ist mir das zu riskant,
          richtig
          denn selbst wenn das pw verschlüsselt ist, reicht ja die codierte Version als Passwort wenn man es richtig an dir url anhängt...
          sehr falsch. pw in der url? ob verschlüsselt oder nicht - immenses risiko.
          [skipped]
          was wäre, wenn ich an die URL bei jedem link das aktuelle Datum + Uhrzeit als Timestamp mitschicken würde?
          lassma, ist unnötig
          Vielleicht noch den Timestamp verschlüsseln, und vor der if abfrage entschlüsseln...
          überflüssig
          Was meint ihr? Würde das machbar sein und den Zweck erfüllen den ich suche?
          [skipped]
          ich meine, dass du meinen letzten post nicht gesehen hast.

          das mim timestamp ist ein "dirty hack", gut gesicherter admin-bereich ist kein fahrrad, don't invent it twice. eine geschmeidige login-prozedur + sessions sind schon ok.

          Kommentar


          • #6
            ja ok, tut mir leid, ich kann mit "sessions" nicht wirklich viel anfangen...

            außerdem kenn ich $_GET["action"] nicht wirklich, was bewirkt das denn?

            sorry aber bin noch ziemlicher Anfänger in PHP...

            kannst du mir das irgendwie erklären was du damit meinst?

            Danke in Voraus!

            MFG Israel's Son

            Kommentar


            • #7
              Original geschrieben von israelsson
              außerdem kenn ich $_GET["action"] nicht wirklich, was bewirkt das denn?
              wunderschön zu sehen, wie hoch der lerneffekt bei manchen leuten hier ist:

              http://www.php-resource.de/forum/sho...threadid=46015
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                ja und was ist damit???

                ich wollte wissen wie man register globals einschaltet!

                und hab dann in der php.ini nach register golbal gesucht und gesehen das ein ; davor wahr...

                habs entfernt und nu funzt es

                Wieso pissen sich hier alle so an und müssen die Leute beleidigne????


                wieso kann man nicht einfach freundlich sein und den jednigen die noch nicht alles wissen das erklären was $_GET[] bewirkt, wofür man das benutzt...

                MFG Israel's Son

                Kommentar


                • #9
                  Original geschrieben von israelsson
                  ich wollte wissen wie man register globals einschaltet!
                  nein, darum ging es weder hier noch dort.

                  dir wurde dort gesagt, dass man GET-parameter nach heutigem standard mit $_GET anspricht - und jetzt fragst du wieder nach, was $_GET denn wohl sei.

                  Wieso pissen sich hier alle so an und müssen die Leute beleidigne????


                  wieso kann man nicht einfach freundlich sein und den jednigen die noch nicht alles wissen das erklären was $_GET[] bewirkt, wofür man das benutzt...
                  weil es dir bereits gesagt wurde, und es einfach nervig ist zu sehen, dass man hier sprichwörtlichen sinne nur "perlen vor die säue wirft", weil du ein paar tage später wieder mit der gleichen frage ankommst, also offenbar absolut null gelernt hast.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    vielleicht liegt das daran, das ich damals nicht verstanden habe!

                    ich weiß immer noch nicht in welchem fall ich sowas anwenden soll??

                    kannst du mir nicht einfach ein beispiel nennen?
                    annscheind kannst du das selber nich, sonst würdest du dir diese bescheurte diskussion sparen und mir einfach ein beispiel sagen und ich bin zufrieden...

                    das is hier doch ein forum für leute die nicht weiterwissen und das eben erfahren wollen, wenn es aber nicht so erklärt wird, das ich es verstehe, was bringt mir das forum dann???

                    ich finds ja schön das du das alles kannst und mich für blöd hälst, aber ich halte dich für genauso blöd, weil du einfach ignorierst das ich es nicht verstanden habe

                    anstatt das du ändern und es "für ganz dumme" ausdrückst, machst du nur weiter...

                    Kommentar


                    • #11
                      Original geschrieben von israelsson
                      vielleicht liegt das daran, das ich damals nicht verstanden habe!
                      und warum hast du dann dort nicht schon nachgefragt, wenn dir noch etwas unklar war?

                      deine antwort war wörtlich
                      danke

                      darauf hätt ich auch selber kommen könn
                      ich weiß immer noch nicht in welchem fall ich sowas anwenden soll??
                      in jedem fall, wo du parameter mit der GET-methode übergibst.

                      kannst du mir nicht einfach ein beispiel nennen?
                      auch das manual äußert sich recht ausführlich dazu, http://www.php.net/manual/de/languag...predefined.php - aber das scheinen manche leute ja für absolut nicht lesenswert zu halten. und wundern sich dann hier darüber, wenn eben dieser umstand mal angeprangert wird.

                      annscheind kannst du das selber nich, sonst würdest du dir diese bescheurte diskussion sparen und mir einfach ein beispiel sagen und ich bin zufrieden...
                      *gähn*, sehr billiger versuch.

                      das is hier doch ein forum für leute die nicht weiterwissen und das eben erfahren wollen, wenn es aber nicht so erklärt wird, das ich es verstehe, was bringt mir das forum dann???
                      tja, gute frage.
                      was bringt dir ein hirn, wenn du es offenbar nicht mal ansatzweise benutzen willst?

                      ich finds ja schön das du das alles kannst
                      habe ich nie behauptet, und werde ich auch nie.

                      aber der unterschied ist einfach, dass manche leute erst mal selber versuchen, probleme zu lösen - und andere fragen sofort nach, ohne bspw. mal ins manual zu schauen oder zu suchen.

                      anstatt das du ändern und es "für ganz dumme" ausdrückst, machst du nur weiter...
                      ich bin nun mal der meinung, dass man nicht immer alles "für ganz dumme" ausdrücken muss.

                      es gibt hinreichend quellen, wo der sachverhalt bereits so anschaulich beschrieben ist, dass ein normaler mensch sie durchaus verstehen können sollte, wenn er sich selbst ein bisschen bemüht.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar

                      Lädt...
                      X