Ed: .htaccess beschreibbar machen - Gefahren?

Hallo!

Für Mod-Rewrite benötige ich die Möglichkeit, die Umschreibungen dynamisch in der .htaccess zu ändern, ohne jedes Mal die Datei händisch zu bearbeiten. Mit einem kleinen Templatebereich innerhalb der .htaccess ist das auch möglich. Bei Änderungen wird dieser Bereich neu geschrieben und die Datei neu gespeichert.

Meine Sorge ist nun, ob es nicht zu einer großene Sicherheitslücke kommt, wenn man die .htacces im Doc-Root beschreibbar macht. Welche Szenarien sind denkbar, dies in nicht vorgesehener Absicht auzunutzen? Gibt es Alternativen, die .htaccess "dynamisch" zu machen?

  1. مرحبا

    Gibt es Alternativen, die .htaccess "dynamisch" zu machen?

    Was ist das Ziel deines vorhabens?
    Jedenfalls liest sich ".htaccess beschreibbar machen" nicht gerade Koscher.

    mfg

  2. Moin!

    Für Mod-Rewrite benötige ich die Möglichkeit, die Umschreibungen dynamisch in der .htaccess zu ändern, ohne jedes Mal die Datei händisch zu bearbeiten.

    Nein, das ist überflüssig. Du kannst eine einzige Regel anlegen, die sämtliche URLs auf genau eine Skriptdatei leitet, und dieses Skript kann dann die URL auswerten und entsprechend reagieren.

    Das Entwurfsmuster "MVC" arbeitet exakt so. Und es wird für ziemlich viele große und auch kleinere Projekte eingesetzt.

    Beim dynamischen Verändern der .htaccess läufst du Gefahr, dir einen unzugänglichen Webserver zu erstellen.

    - Sven Rautenberg

    1. Moin!

      Nein, das ist überflüssig. Du kannst eine einzige Regel anlegen, die sämtliche URLs auf genau eine Skriptdatei leitet, und dieses Skript kann dann die URL auswerten und entsprechend reagieren.

      Ist klar, aber davon möchte ich eigentlich eher Abstand nehmen, weil

      1. es sich nur um einen bestimmten Bereich der Website handelt, für den Mod-Rewrite benutzt wird, der übrige Bereich ist über "normale" Adressen erreichbar
      2. es nicht auzuschließen ist, dass noch weitere Bereiche mit Mod-Rewrite hinzukommen. Ein zentrales Skript müsste entsprechend auswerten, welcher Bereich angesprochen werden muss. Machbar, aber m. E. unübersichtlicher, als wenn es mehrere zentrale Skripte gibt, die jeweils für bestimmte Bereiche spezialisert sind.
      3. unklar ist, wie es sich in Bezug auf SEO auswirkt, wenn alle Adressen erreichbar sind, auch solche, die es nicht gibt. Gut, da könnte man explizit 404 senden.

      Vielleicht liege ich falsch, aber ich denke, meine Gründe, auf ein einziges zentrales Skript zu verzichten, sind auch nicht abwegig.

      Beim dynamischen Verändern der .htaccess läufst du Gefahr, dir einen unzugänglichen Webserver zu erstellen.

      Das ist mir bewusst, aber solche Sachen wie Herumwerkeln an der .htaccess werden mehr als genau getestet, damit genau dieses nicht passiert.

      Die Frage bleibt noch immer offen: Welche Angriffsszenarien sind denkbar?

      1. Ausführbarer Code wird untergeschmuggelt, der die .htaccess in nicht gewünschter Weise ändert. Ich denke, diesen Fall kann ich ausschließen.
      2. Intern kommen von anderen vServern Schreibzugriffe auf die .htaccess.

      Übersehe ich etwas?

      1. Moin!

        Nein, das ist überflüssig. Du kannst eine einzige Regel anlegen, die sämtliche URLs auf genau eine Skriptdatei leitet, und dieses Skript kann dann die URL auswerten und entsprechend reagieren.

        Ist klar, aber davon möchte ich eigentlich eher Abstand nehmen, weil

        1. es sich nur um einen bestimmten Bereich der Website handelt, für den Mod-Rewrite benutzt wird, der übrige Bereich ist über "normale" Adressen erreichbar

        Du kannst die Regel natürlich nur für ein bestimmtes Muster an URLs (beispielsweise ein Unterverzeichnis) anwenden.

        1. es nicht auzuschließen ist, dass noch weitere Bereiche mit Mod-Rewrite hinzukommen. Ein zentrales Skript müsste entsprechend auswerten, welcher Bereich angesprochen werden muss. Machbar, aber m. E. unübersichtlicher, als wenn es mehrere zentrale Skripte gibt, die jeweils für bestimmte Bereiche spezialisert sind.

        Das ist deine Meinung - weil dein derzeitiger Zustand des Projekts nicht wirklich so schön organisiert ist, wie ich zwischen den Zeilen lese. Ist ja aber kein Beinbruch - pro Abschnitt gibts dann eben genau eine Regel, die das erledigt.

        1. unklar ist, wie es sich in Bezug auf SEO auswirkt, wenn alle Adressen erreichbar sind, auch solche, die es nicht gibt. Gut, da könnte man explizit 404 senden.

        Genau. Und schon ist das auch getan.

        Vielleicht liege ich falsch, aber ich denke, meine Gründe, auf ein einziges zentrales Skript zu verzichten, sind auch nicht abwegig.

        Du willst lieber eine unbekannte Anzahl von Rewrite-Regeln, die bei JEDEM Zugriff auf den Webserver alle immer geparst werden müssen, um dann die regulären Ausdrücke nacheinander auf die URL anzuwenden, in der .htaccess-Datei haben. Das halte ich für ziemlich ungünstig.

        Du hast nach besseren Lösungen gefragt, und du hast meine Meinung dazu gelesen.

        - Sven Rautenberg

        1. Hallo!

          Du kannst die Regel natürlich nur für ein bestimmtes Muster an URLs (beispielsweise ein Unterverzeichnis) anwenden.

          Zur Struktur:

          Der Bereich, den ich meinte, bildet zwar eine semantische Einheit, soll aber eben nicht an z. B. ein zusammenfassendes Unterverzeichnis gebunden werden. Dann wäre es tatsächlich mit einer einengenden Regel getan.

          /kategorie_1 => kategorie.php
          /kategorie_2 => kategorie.php
          usw.

          /kategorie_1/text_1 => details.php?kat=kategorie_1&text=text_1
          /kategorie_2/text_6 => details.php?kat=kategorie_2&text=text_6

          So ist das zur Zeit gelöst. Dieser Bereich besitzt also von Doc-Root aus kein zusammenfassendes Merkmal, nach dem sich eine einfache Regel bilden ließe. Um nicht immer ein zentrales Skript laufen zu lassen, halt mehrere exlizite Regeln für die einzelnen Kategorien.

          1. es nicht auzuschließen ist, dass noch weitere Bereiche mit Mod-Rewrite hinzukommen. Ein zentrales Skript müsste entsprechend auswerten, welcher Bereich angesprochen werden muss. Machbar, aber m. E. unübersichtlicher, als wenn es mehrere zentrale Skripte gibt, die jeweils für bestimmte Bereiche spezialisert sind.

          Das ist deine Meinung - weil dein derzeitiger Zustand des Projekts nicht wirklich so schön organisiert ist, wie ich zwischen den Zeilen lese. Ist ja aber kein Beinbruch - pro Abschnitt gibts dann eben genau eine Regel, die das erledigt.

          Das ist ein historisch gewachsenes Projekt, das sich nicht eben mal komplett ändern lässt.

          Du willst lieber eine unbekannte Anzahl von Rewrite-Regeln, die bei JEDEM Zugriff auf den Webserver alle immer geparst werden müssen, um dann die regulären Ausdrücke nacheinander auf die URL anzuwenden, in der .htaccess-Datei haben. Das halte ich für ziemlich ungünstig.

          Nein, eine genau vorgegebene Anzahl Regeln, abhängig von der Anzahl der Kategorien.