Zum Inhalt springen

[mod_rewrite] Problem mit [last] und [R=404]


Empfohlene Beiträge

Hallo.

Ich habe ein kleines Syntaxproblem in meiner mod_rewrite Konfiguration (local).

Zum Ergebnis:

.html Dateien sollen auf ein PHP Script intern umgeleitet werden um dynamische Seiten aus einer DB anzuzeigen

.htm Dateien sollen intern auf die entsprechenden .php Dateien umgeleitet werden

.php Dateien dürfen nicht aufrufbar sein

Zu dem letzten Punkt bitte keine Anmerkungen. Nur soviel von einem "Experten" an mich:

Die Hacker sollen nicht wissen, dass es PHP Scripte sind

*Beleidigung* Der meint wohl cracker Kekse... ;) Na ja. So sind sie, unsere "Experten"

Zu meiner (gedachten) Umsetzung:

# mod_rewrite

RewriteEngine On

 # Zugriff auf PHP Dateien nur via ".htm"

    RewriteRule ^(.*).html$ script.php?variable=$1 [last]

 # Zugriff auf PHP Dateien nur via ".htm"

    RewriteRule ^(.*).[COLOR="Orange"]ht***[/COLOR] $1.php [last]

 # Direktzugriff auf PHP Dateien unterbinden

    RewriteRule ^(.*).php$ $1.php [R=404,last]

Die erste Direktive wurde leicht angepasst...

an ADMIN:

Ist die alte DOS 3er Endung von .html wirklich so verfassungswidrieg, dass diese auf den Index bei euch kommt?? -> ht***

Nach meiner Logik geht mod_rewrite von oben nach unten die Direktiven durch. Also am Beispiel

Domain: wwi.de (was weiß ich ;) )

Fall 1

Ergebnis: 404

Resultat: Korrekt

Fall 2

Ergebnis: eine Seite aus der DB

Resultat: Korrekt

Fall 3

Ergebnis: 404

Resultat: Fehler (hierüber sollte das PHP Script aufrufbar sein)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde das so ung. machen:


RewriteEngine On


# HTML-Dateien

RewriteCond %REQUEST_URI% (.*)\.htm[l]?$ [NC]

RewriteRule (.*)\.htm[l]?$ $1.php [QSA,L]

# PHP-Dateien

RewriteCond %REQUEST_URI% (.*)\.php$ [NC]

RewriteRule (.*) - [F,L]

Eine Anfrage auf index.html wird auf index.php umgeleitet

Eine Anfrage auf index.htm wird auf index.php umgeleitet

Eine Anfrage auf index.php bekommt eine Forbidden-Meldung

Dabei musst du aber sehen, dass du in deinen Skripten alle Links dann als html ausgibst und musst evtl. auch Dateinamen bzw. Endungen ersetzen etc.. Je nachdem wie die Skripte halt aufgebaut sind.

Ansonsten: Das ist Blödsinn.

1. Ist es keine Sicherheitslücke, wenn der draußen weiß, dass da PHP läuft.

2. Muss dann auch die Meldung vom Web-Server angepasst werden, dass der nicht mitteilt, dass er PHP laufen lassen kann.

3. Wenn z.B. Session Cookies gesetzt werden, weiß der geneigte Angreifer, dass ihr PHP verwendet.

4. Wenn generell Cookies gesetzt werden, weiß der geneigte Angreifer, dass wohl kaum statische HTML-Seiten verwendet werden.

5. Wenn der Angreifer merkt, wie "toll" ihr eure Seite schützt, ist er vielleicht eher der Meinung, er könnte es da mal probieren. Denn:

6. Wenn ihr hier so "professionell" vorgeht, findet er bestimmt woanders ne Lücke die offen ist.

7. Sicher ist es, wenn es keiner kann, nicht wenn es keiner weiß!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

erstmal vielen Dank,

mod_rewrite hat mich bisher so interessiert, dass ich einfache URLs umkonvertiere.

Ich habe da nur ein kleines Problem bei deienm Script...

- Ich benötige eine exakte Unterscheidung von .html und .htm Dateien.

Die .html Dateien werden anders aufgerufen. Wie bei Blogs mit Kategorien und so...

Die .htm Dateien sind die "direkten" Zugänge zu den PHP Scripten.

- Zum Thema PHP... Es "muss" Code 404 rüberkommen. R=404. Das kann ich noch grade selber *freu*

1. Ist es keine Sicherheitslücke, wenn der draußen weiß, dass da PHP läuft.

2. Muss dann auch die Meldung vom Web-Server angepasst werden, dass der nicht mitteilt, dass er PHP laufen lassen kann.

3. Wenn z.B. Session Cookies gesetzt werden, weiß der geneigte Angreifer, dass ihr PHP verwendet.

4. Wenn generell Cookies gesetzt werden, weiß der geneigte Angreifer, dass wohl kaum statische HTML-Seiten verwendet werden.

5. Wenn der Angreifer merkt, wie "toll" ihr eure Seite schützt, ist er vielleicht eher der Meinung, er könnte es da mal probieren. Denn:

6. Wenn ihr hier so "professionell" vorgeht, findet er bestimmt woanders ne Lücke die offen ist.

7. Sicher ist es, wenn es keiner kann, nicht wenn es keiner weiß!

Ich weiß, ich weiß. Die Entscheidung lasse ich meinem spezialisten "Experten" der anscheint der große Kekse versteher ist (siehe ersten Post wg Keksen) ;) Und so kleine FISIs und FIAEs und studierte INFOs doch gar nichts von der Materie bzw. Realität verstehen. :bimei Nur so viel, fast - oder alle - können Hacken (legal)... Aber wir wissen ja nichts :floet: :uli an die "Experten"

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde das so ung. machen:


RewriteEngine On


# HTML-Dateien

RewriteCond %REQUEST_URI% (.*)\.htm[l]?$ [NC]

RewriteRule (.*)\.htm[l]?$ $1.php [QSA,L]

# PHP-Dateien

RewriteCond %REQUEST_URI% (.*)\.php$ [NC]

RewriteRule (.*) - [F,L]

Was für eine Flag ist
[QSA]
? Das gleiche wie
[redirect]

?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was für eine Flag ist
[QSA]
?
QSA = QueryStringAppend. Also den Query-String aus der urspr. Anfrage an die neue Anhängen. Der Query-String ist alles das was nach dem ? in der URL kommt. Wenn du html und htm unterscheiden musst, das ganze einfach in 2 Conditions aufteilen ;) Also

RewriteCond %REQUEST_URI% (.*)\.html$

...

RewriteCond %REQUEST_URI% (.*)\.htm $

EDIT:

Das m gefolgt von einem $ wird hier zensiert (Microsoft sei Dank :D ). Hatte mich schon über deinen Code gewundert ;)

Also oben das Leerzeichen vor dem zweiten $ wegdenken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also jetzt noch mal kurz für mich...

"RewriteCond" definiert die Datenherkunft...

"RewriteRule" definiert die Aktion die von der Datenherkunft (einem oder mehreren oberen RewriteCond Definitionen) beschrankt werden.

RewriteRule = RewriteCond + [action] + [flags]

oder

RewriteCond = [lockment rule]

RewriteRule = "(.*)" + [action] + [flags]

Link zu diesem Kommentar
Auf anderen Seiten teilen

"RewriteCond" definiert die Datenherkunft...

RewriteCond ist einfach eine Bedingung die Erfüllt werden muss (Cond = Condition). Nur wenn alle Bedingungen erfüllt sind, wird die folgende Rule angewandt.

Die Rule definiert nicht nur ein .* (generell die komplette URI), sondern genauso wie in der Condition einen regulären Ausdruck und danach die Umschreibung.

siehe z.B.

modrewrite.de | mod_rewrite & .htaccess (Apache Server)

Oder entsprechende Literatur.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi.

Ist das korrekt?

# mod_rewrite

  RewriteEngine On


  # HTM-Dateien: Zugriff auf PHP Scripte

    RewriteCond %REQUEST_URI% (.*)\.htm?$ [NC]

    RewriteRule (.*)\.htm?$ $1.php [QSA,L]

  # HTML-Dateien: Seiten aus Datenbank

    RewriteCond %REQUEST_URI% ^/(.*)/(.*)\.html?$ [NC]

    RewriteRule ^/(.*)/(.*)\.html?$ /script.php?category=$1&page=$2 [L]

  # PHP-Dateien: "Existiert nicht" zurückgeben

    RewriteCond %REQUEST_URI% (.*)\.php?$ [NC]

    RewriteRule (.*)\.php?$ $1.php [QSA,L,R=404]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...