Rewrite mit falschem Ordner

Diskutiere Rewrite mit falschem Ordner im Server einrichten und konfigurieren Forum; Hallo, ich bastle gerade an einer Website. Für diesen Zweck will ich (zur Sicherheit) die Dateiendung .php verschleiern. Aus diesem Grund nutze...

  1. RawBit
    RawBit Mitglied
    Hallo,

    ich bastle gerade an einer Website. Für diesen Zweck will ich (zur Sicherheit) die Dateiendung .php verschleiern. Aus diesem Grund nutze ich folgendes Rewrite:

    Code (Text):

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.(php|pl|py|cgi|htm|html)
    RewriteRule ^/?(.*)\.(php|pl|py|cgi|htm|html)$ /$1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^/?(.*)$ /$1.php [L]
     
    Das funktioniert soweit auch. Der Zugriff auf login.php / login.html / login.pl etc wird umgeleitet zu /login. Jetzt ist aber das Problem, dass auf dieser Seite Benutzer Profile erstellen können, die mittels Username so aufrufbar sind:

    www.domain.com/username

    Dabei entsteht natürlich ein Konflikt mit möglichen vorhandenen Dateien. Ich hab mich mal umgesehen, wie andere Seiten das gelöst haben. Am besten hat mir das vorgehen von Twitter gefallen, die alle echten Dateien mit dem Präfix /i/ aufruft. (Also /i/login statt /login).

    Das möchte ich in mein Rewrite auch einbauen, allerdings scheitere ich daran. (Ich möchte das mit /s/ - für "system" - lösen). Mod_Rewrite ist leider nicht meine Stärke. Kann mir jemand dabei helfen meine Zeilen so umzubauen, dass echte Dateien (mit Ausnahme von index) nur über folgende Syntax aufgerufen werden können: /s/login, /s/register, /s/pw-forget, etc...? Bzw das ganze auch gleich um eine Zeile ergänzen, die dann /(a-zA-Z0-9) in profile.php?$1 umwandelt, ohne dass eine Weiterleitung auf /s/profile?$1 oder so passiert?

    Vielen Dank.
     
  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. Tobse
    Tobse Bekanntes Mitglied
    Du brauchst einen Lookahead, siehe https://regex101.com/r/ztjtQF/1

    Code (Text):

    RewriteRule ^/?(?!s/)(.*)$ /$1.php [L]
     
    Hier möchte ich aber ein paar Dinge anmerken:
    Wenn du von /login.php auf /login umleitest (deine 301 Rule), dann weiss ich als Angreifer, dass du PHP benutzt. Schicke da einen 404.

    Des weiteren:
    Vergiss die ganze Aktion von wegen komplizierter Rewrites. Der Stand der Technik in PHP ist inzwischen, dass man alle Requests auf eine index.php leitet und dann mit PHP-Code entscheidet, wie der request behandelt werden soll. Frameworks machen das für dich; wenn du (aus welchem Grund auch immer) kein Framework einsetzt, kannst du die Symfony-Komponenten trotzdem benutzen (funktionieren auch ausserhalb des Frameworks): http://symfony.com/components/Routing
     
  4. RawBit
    RawBit Mitglied
    Hat leider nicht funktioniert, bin jetzt aber selbst auf die Lösung gekommen:

    Code (Text):
    RewriteRule ^index\.(php|pl|py|cgi|htm|html)$ / [L,R=301]

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.(php|pl|py|cgi|htm|html)
    RewriteRule ^(.*)\.(php|pl|py|cgi|htm|html)$ /s/$1 [L,R=301]
    RewriteRule ^s/(.*)$ /$1.php [L]

    RewriteRule ^([a-zA-Z0-9]+)$ /profile.php?uid=$1
    Leider war auch der Tipp mit 404 statt 301 nicht hilfreich, weil ich dann - logisch irgendwie - nur noch ne Fehlermeldung erhalte. 404 eignet sich wohl nicht so gut zum Verschleiern ;) Ich spekuliere einfach darauf, dass ein Angreifer nicht automatisch von PHP, nur weil .php ein 301-Redirect ist, ausgeht (Serversignaturen und PHP-Fehlermeldungen gibt es ohnehin keine) sondern tatsächlich mehrere Dateiendungen probiert und dann erkennt, dass er sich mit der möglichen ersten Vermutung von PHP als benutze Sprache doch nicht mehr so sicher sein kann. Microoptimizing, ich weiß, aber Kleinvieh und Mist und so.

    Zu deinem letzten Absatz: Ich weiß, dass das so gehandhabt wird und das ist auch nicht besonders neu. Ich bin allerdings kein Freund von Symphony oder anderen Fertig-Frameworks: Je nach Anforderung programmiere ich alles selbst (außer das JS-Framework, weil jQuery kann man einfach nicht toppen). Ich denke mir nämlich immer, dass ich dann eigentlich gleich ein CMS installieren könnte und das ist nicht unbedingt Sinn der Sache. ^^

    Trotzdem danke!
     
  5. Tobse
    Tobse Bekanntes Mitglied
    Warum denn nicht? Wenn das CMS die Anforderungen deines Kunden erfüllt, bsparst du dir einen riesen Haufen Arbeit. Alles jedes mal selbst zu Programmieren ist unnötiger Aufwand.

    Da stimme ich dir zu - Symfony aber auch nicht. Dass du das selbst besser hinbekommst wage ich stark zu bezweifeln. Und selbst wenn? Warum das Rad neu erfinden? Probiers einfach mal aus, du wirst es mögen ;)
     
  6. RawBit
    RawBit Mitglied
    Ich mache das für keinen Kunden sondern für Eigenprojekte. Klar, Kunden bekommen ein Wordpress, das ist logisch.

    Und doch, meine Frameworks können durchaus mit Symphony mithalten. Ich halte einfach nichts davon aus lauter Fertigteilen was zusammenzuschustern, sondern ich will zu 100% meinen Code haben und keinen anderen. Ausnahmen stellen nur Dinge dar wie zB eine Mobile-Detection oder Telefonnummer-Syntax-Validierung. Und clientseitig eben jQuery. Ansonsten verwende ich nur eigenen Code für eigene Projekte. Da kommt kein Symphony rein, kein Bootstrap, keine jQuery UI oder sonstiges Zeug. Ich hasse es einfach total, wenn ich auf Websites deutlich sehe, wie die die einzelnen Komponenten im Legostyle zusammengesetzt haben. Das ist für mich einfach ein ideeller Wert alles selbst zu machen, wenns um eigene Projekte geht. Deswegen dauert es auch meist einige Jahre bis etwas fertig wird.
     
  7. Tobse
    Tobse Bekanntes Mitglied
    Naja okey, wenn du es für dich selbst machst kein Thema - mächtiger Lerneffekt obendrein. Viel Erfolg ;)
     
  8. RawBit
    RawBit Mitglied
    Danke dir! :3
     
Die Seite wird geladen...

Rewrite mit falschem Ordner - Ähnliche Themen

URL Rewrite hängt keine sessionid an
URL Rewrite hängt keine sessionid an im Forum Web Tier
RewriteRule - Frage
RewriteRule - Frage im Forum Hausaufgaben
modRewrite
modRewrite im Forum Web Tier
Session tracking mit URL rewrite - Session weg!
Session tracking mit URL rewrite - Session weg! im Forum Allgemeines EE
Console Anwedung mit Rewrite auf ein System.out.println ?
Console Anwedung mit Rewrite auf ein System.out.println ? im Forum Allgemeine Java-Themen
Thema: Rewrite mit falschem Ordner