burnersk Geschrieben 8. Juli 2007 Geschrieben 8. Juli 2007 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 http://www.wwi.de/test.php Ergebnis: 404 Resultat: Korrekt Fall 2 http://www.wwi.de/test.html Ergebnis: eine Seite aus der DB Resultat: Korrekt Fall 3 http://www.wwi.de/test.htm Ergebnis: 404 Resultat: Fehler (hierüber sollte das PHP Script aufrufbar sein) Zitieren
geloescht_JesterDay Geschrieben 9. Juli 2007 Geschrieben 9. Juli 2007 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ß! Zitieren
burnersk Geschrieben 9. Juli 2007 Autor Geschrieben 9. Juli 2007 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" Zitieren
burnersk Geschrieben 9. Juli 2007 Autor Geschrieben 9. Juli 2007 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]? Zitieren
geloescht_JesterDay Geschrieben 9. Juli 2007 Geschrieben 9. Juli 2007 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 ). Hatte mich schon über deinen Code gewundert Also oben das Leerzeichen vor dem zweiten $ wegdenken. Zitieren
burnersk Geschrieben 9. Juli 2007 Autor Geschrieben 9. Juli 2007 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] Zitieren
geloescht_JesterDay Geschrieben 9. Juli 2007 Geschrieben 9. Juli 2007 "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. Zitieren
burnersk Geschrieben 12. Juli 2007 Autor Geschrieben 12. Juli 2007 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] Zitieren
geloescht_JesterDay Geschrieben 13. Juli 2007 Geschrieben 13. Juli 2007 Ist das korrekt? Das wird dir der Apache sagen, wenn er keinen Server-Fehler zurückgibt Auf den ersten Blick konnt ich keinen groben Fehler erkennen... Zitieren
Empfohlene Beiträge
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.