Ankündigung

Einklappen
Keine Ankündigung bisher.

XSS-Schutz / PHP_SELF vs. SCRIPT_NAME / Pfad zum Script

Einklappen

Neue Werbung 2019

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

  • XSS-Schutz / PHP_SELF vs. SCRIPT_NAME / Pfad zum Script

    Guten Morgen zusammen,

    vorweg erkläre ich kurz die Rahmenbedingungen. Meine Startseite ist die index.php. Hier wird zum Beispiel der Login (neben ein paar anderen Dingen) überprüft. Ist alles ok, geht es in den internen Bereich, allerdings ohne eine neue Seite aufzurufen, man ist immer noch auf der index.php, allerdings wurde durch das Erfüllen der Login-Kriterien an einer if-Klausel "umgeleitet". Innerhalb des internen Bereichs gibt es dann vereinfacht eine Navileiste, einen Main-Container und einen Footer. Navigation und Footer bleiben unverändert, aber den Inhalt des Mains verändere ich durch mit GET übergebene VIEWS (z.B. index.php?view=start). In Code sieht das in etwa so aus:

    PHP-Code:
    if (login abgesendet) {
         if (
    login ok) {
              <
    Navileiste>

              <
    Main?view=start>

              <
    Footer>
         } else {
              
    Loginformular anzeigen
         
    }
    } else {
         
    Loginformular anzeigen

    Die Views sind ebenfalls PHP-Dateien, also z.B. view_start.inc.php. Wenn ich hier nun Formulare behandle, benötigen diese ja ein
    Code:
    <form action=".............." method="post">
    .
    Das ganze mit
    PHP-Code:
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?> method="post">
    macht keinen Sinn, da ich nur den Pfad bis zur index.php und nicht mit den jeweiligen Views bekomme. Bei SCRIPT_NAME das selbe Problem.

    Mein Lösungsansatz und meine Fragen wären folgende, wobei diese zwei Aspekte beinhalten.

    1. SCRIPT_NAME ist PHP_SELF vorzuziehen, kann man das so stehen lassen?

    2. Lauert irgendwo eine Gefahr in Hinblick auf XSS oder sonstige Gefahren, wenn ich das action-Attribut so umschreibe
    PHP-Code:
    <form action="<?php echo $_SERVER['SCRIPT_NAME'] . "?view=start"?> method="post">
    und an den jeweiligen Stellen die Views einfach mit dran hänge?

    Ist leider viel Text geworden, sorry dafür und vielen Dank für Eure Hilfe.


  • #2
    Hallöchen,

    mein Tipp: such dir eine halbwegs anständige Routing-Komponente und überarbeite dein Konzept grundlegend. Dann steuerst du die Formulare über definierte Routen. Dieses manuelle zusammendrahten von PHP-Scripts endet - wenn man es nicht sehr sehr gut macht - irgendwann in einer Sackgasse oder in einer Wartungs-Hölle.

    Ich persönlich lege die App-URL gerne in einer Konfigurationsdatei fest. Alle Anfragen laufen dann generell durch die gleiche Datei (quasi der FrontController). Von dort aus werden die Aufgaben, abhängig von der angefragten Route, an den zuständigen Controller übergeben.

    Edit: Mehr dazu findest du hier:
    - http://www.php.de/php-einsteiger/111...tml#post821804
    - #42: http://www.php.de/821804-post42.html

    Viele Grüße,
    lotti

    Kommentar


    • #3
      Werde ich mir ansehen, vielen Dank. Hast Du noch eine Meinung zu PHP_SELF vs. SCRIPT_NAME?

      Kommentar


      • #4
        Zitat von michiman Beitrag anzeigen
        Werde ich mir ansehen, vielen Dank. Hast Du noch eine Meinung zu PHP_SELF vs. SCRIPT_NAME?
        Nur kurz überflogen von mir, sollte aber alles drinne stehen was du wissen wolltest: http://www.vlmedia.de/279/php-self-manipulation

        Kommentar


        • #5
          1. SCRIPT_NAME ist PHP_SELF vorzuziehen, kann man das so stehen lassen?
          Ja.

          2. Lauert irgendwo eine Gefahr in Hinblick auf XSS oder sonstige Gefahren, wenn ich das action-Attribut so umschreibe
          Nein.

          p.s.
          hinter ?> fehlt bei Dir ein "

          PHP-Code:
          <form action="<?php echo $_SERVER['SCRIPT_NAME'] . "?view=start"?>" method="post">
          vg
          jack
          -

          Kommentar

          Lädt...
          X