Ankündigung

Einklappen
Keine Ankündigung bisher.

Einfaches Login - Aber man kann auch ohne Login die Seite aufrufen?

Einklappen

Neue Werbung 2019

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

  • Einfaches Login - Aber man kann auch ohne Login die Seite aufrufen?

    Bitte drigend um Unterstützung:

    Ich habe einfaches Script zum Schutz einer Seite:


    PHP-Code:
     <?php
        $user 
    $_POST['name'];
        
    $pass $_POST['pass'];
        
    $okuser "admin" ;
        
    $okpass "password" ;
        if (
    $user == $okuser && $pass == $okpass) {
        include 
    "kunde1.php" ;
        } else {
         include 
    "../html/error.html" ;
        }
      
    ?>
    Funktioniert auch einwandfrei. Nach dem Einloggen wird man zu kunde1.php
    weitergeleitet.

    Das Problem ist, das man theoretisch im Browser die Seite "index1.php" einfach so seperat aufrufen kann, auch ohne dass man ein Passwort eingibt.

    Weswegen ich mir überlegt habe die php Seite

    kund1.php

    dynamisch zu erzeugen. Das sollte dann etwa so ausschauen.

    kunde1?019743297.php Diese Seite lässt sich quasie nur 1 malig aufrufen.

    Geht das?
    LG

  • #2
    Leg die Datei halt irgendwo hin, wo man sie nicht aufruen kann. (Oberhalb des DocumentRoots). Alternativ: Erstelle einen Ordner "includes" und pack ne .htaccess Datei mit folgendem Inhalt rein:

    Code:
    deny from all

    Kommentar


    • #3
      1.) weitergeleitet wirst du nicht
      http://www.php.net/manual/de/function.include.php

      um die aseite direct aufzurufen, muss der angreifer wisen, das du kunde1.php includiert.

      2.)kannst du testen, ob index.php aufgerufen wurde oder nicht selbstredend in der kunde1.php und so den zugriff stoppen

      http://www.php.net/manual/de/reserve...les.server.php


      3.) kannst du in der kunde1.php nur variablen deffinieren, und diese dann in der index ausgeben.
      da kannste auch fuinctionen, methode classen und sowas nehmen, sofern die ausgabe generieren.

      4.) alxy Vorschlag

      Kommentar


      • #4
        5.) Oder eben mit Sessions arbeiten. D. h. wenn der User sich einloggt bleibt er eingeloggt solange er den Browser-Tab offen lässt.
        PHP-Code:
        <?php
        session_start
        ();

        $loggedIn false// Diese Variable ist true wenn der User derzeit eingeloggt ist

        if (isset($_SESSION['loggedIn']) and $_SESSION['loggedIn'] == true) { // Pruefen ob in Session eingeloggt
            
        $loggedIn true;
        } else {
            
        // isset() notwendig! Sonst gibt's Probleme wenn 'name' und 'pass' nicht existieren!
            
        if (isset($_POST['name']) and isset($_POST['pass'])) { 
                
        $user $_POST['name']; 
                
        $pass $_POST['pass']; 
                
        $okuser "admin" 
                
        $okpass "password" 
                if (
        $user == $okuser && $pass == $okpass) { 
                     
        $loggedIn true;
                     
        $_SESSION['loggedIn'] = true// Erfolgreichen Login in einer Session-Variable vermerken
                
        }
            }
        }

        if (
        $loggedIn// Kunde.php nur inkludieren falls der User eingeloggt ist
            
        include "kunde1.php" 
        } else { 
             include 
        "../html/error.html" 
        }
        kunde1.php:
        PHP-Code:
        if (isset($loggedIn) and $loggedIn) {
           ... 
        // Hier den Code hin

        Kommentar


        • #5
          Zitat von alxy Beitrag anzeigen
          Leg die Datei halt irgendwo hin, wo man sie nicht aufruen kann. (Oberhalb des DocumentRoots). Alternativ: Erstelle einen Ordner "includes" und pack ne .htaccess Datei mit folgendem Inhalt rein:

          Code:
          deny from all

          Genial. Es funktiniert

          Habe den Link jetzt seperat über den Browser aufgerufen und er sagt mir:
          Forbidden


          Klasse Forum hier!

          und vielen Dank @moma


          Natürlich muss man auch Etwas mitdenken. Sonst funktioniert das nicht.


          Edit:

          @monolith

          Vielen Dank für deinen Beitrag. Ich schaue mir das gerne an!

          Kommentar


          • #6
            @alxy

            Vielen Dank für deinen Beitrag.

            Wie schon oben beschrieben, ich habe es geschafft. Mann kann die Links nicht mehr seperat öffnen.

            Ich habe allerdings ein Problem. Sobald er
            "kunde1.php" included, kann ich keine weiteren Links aufrufen (z.B.Menüfeld)
            Denn dann erscheint ja wegen dem htaccess ein:

            FORBIDDEN

            Kann ich das umgehen?

            Edit: Auch möchte er mein Formular auf "kunde1.php" nicht mehr senden, denn dann erscheint das übliche

            FORBIDDEN.

            sobald ich den Submit Button tätige

            Kommentar


            • #7
              Das ist die Regel: Datei-Zugriff sperren -> KEINE INTERAKTION DIREKT MIT DEN BETROFFENEN DATEIEN

              Der Ausweg wäre wenn du alle deine PHP-Files so anlegst, das sie von einer index.php bei bedarf includiert werden und du alles über diese index.php abwickelst ( forms, ajax-calls,... ).

              Du könntest auch Datei(- oder Dateiendungs-)spezifisch sperren, aber das bringt dich nicht zum Ziel.

              Grundsätzlich empfiehlt es sich das includieren der jeweiligen Skripte innerhalb der index.php via GET zu steuern. Die (sauberere) alternative ist INFO_PATH. Wie genau man so etwas angeht ist hier im Forum schon 1000-fach angesprochen und mit Beispielen erläutert worden: Foren-Suche.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Zitat von tr0y Beitrag anzeigen
                Das ist die Regel: Datei-Zugriff sperren -> KEINE INTERAKTION DIREKT MIT DEN BETROFFENEN DATEIEN

                Der Ausweg wäre wenn du alle deine PHP-Files so anlegst, das sie von einer index.php bei bedarf includiert werden und du alles über diese index.php abwickelst ( forms, ajax-calls,... ).

                Du könntest auch Datei(- oder Dateiendungs-)spezifisch sperren, aber das bringt dich nicht zum Ziel.

                Grundsätzlich empfiehlt es sich das includieren der jeweiligen Skripte innerhalb der index.php via GET zu steuern. Die (sauberere) alternative ist INFO_PATH. Wie genau man so etwas angeht ist hier im Forum schon 1000-fach angesprochen und mit Beispielen erläutert worden: Foren-Suche.
                Kannst du mir bitte da ein Beispielnennen?

                Ich habe mehrere Scripte in der kunde1.php Seite stehen:

                HTML-Code:
                <form method="post" action="../action/about_action.php" name="kontakt" onsubmit="insertBR();" >
                   <textarea class="eins" name="mytxtarea1" id="mytxtarea1" cols="" rows="" style="width:800px;height:30px;" >
                     <?php $lines = file ('../php/home.txt'); echo $lines[0]; ?>
                   </textarea>
                    <p style="margin-top:11px;"></p>
                    <div style="margin:0px auto; width:245px; height:40px;">
                     <input name="submit" type="submit" style="width:245px" value="Save" />
                    </div>
                   </form> 
                
                 <form action="../action/about_bild_upload.php" method="post" enctype="multipart/form-data">
                   <input type="file" name="file"><br>
                   <input type="submit" name="submit" value="Hochladen">
                 </form>
                      <?php
                        if(isset ($success_msg) && !empty($success_msg))
                        {
                           echo $success_msg;
                        }
                           
                        if(isset($error_msg) && !empty ($error_msg))
                         {
                            echo $error_msg;
                          }         
                        ?>

                Kommentar


                • #9
                  Kann mir niemand ein Beispiel nennen?

                  Kommentar

                  Lädt...
                  X