Redirect mit Mod-Rewrite oder ...?

PH

Legendäres Mitglied
Sagen wir, ich habe eine community, dummy.ch und viele Mitglieder, die eine eigene homepage auf der community wollen.

Ich habe per php und mysql diese mitglieder homepages programmiert, nur der link dorthin sieht wie folgt aus:

dummy.ch/mitglieder_hp.php?mitglied=dummy&page=einstieg


Ich möchte folgendes erreichen:

- dass die mitgliederpages über members.dummy.ch/dummy aufgerufen werden können
(i.e. /dummy auf mitglied=dummy&page=einstieg und z.B. /dummy/page1 auf mitglied=dummy&page=page1)
- dass diese adresse members.dummy.ch/dummy wärend der navigation auf der mitgliederpage bestehen bleibt, nicht aber bei der navigation auf dummy.ch
- dass google und andere suchmaschinen diese mitgliederhomepages indexieren können

security: kann das irgendwie missbraucht werden? auf was muss ich achten, damit das ding dann auch so funktioniert, wie ich es will, und nicht wie die hacker wollen?

kann mir da bitte jemand weiterhelfen?
 
Zu Mod-Rewrite sage ich nix - da kenne ich mich nicht aus.

Zum Sicherheitsproblem: Im Prinzip ganz einfach: Trau nie, nie, nie Benutzereingaben.

Urls sind Benutzereingaben. Was also wird mit dem Nutzernamen gemacht?

Wenn es eine Abfrage

QUOTE Select UserId From Nutzer Where UserName = $Url-Wert


gibt, dann ist die offen für Sql-Injektionen.


Zusätzliches Problem bei solchen Dingen plus Mod-Rewrite (hatte ich mal irgendwo gesehen). Url:


QUOTE example.com/Max-Mustermann/Berlin/15


Nach kurzem Herumspielen stellte sich heraus, daß bloß die ID hinten entscheidend war. Folglich:


QUOTE example.com/Gabi-Musterfrau/Hamburg/15
example.com/bloeder-Typ-aus-dem-Kuhstall/15


erzeugte dieselbe Ausgabe mit Status 200. So etwas sind zwar nicht direkt Sicherheitslücken, aber birgt die Gefahr von Duplicated Content plus ein erhebliches Störpotential, wenn irgendjemand solche Urls mit böswilliger Absicht oder sogar unabsichtlich verlinkt: Jemand muß sich bloß hinten bei der Nummer vertippen, dann steht in der Url ein Männername, auf der Seite kommen Daten einer Frau raus - und der Nutzer denkt, er hätte etwas kaputt gemacht.

Das hört sich zwar wie ein Witz an, ist jedoch ernst gemeint. Laien denken dann, sie hätten die Daten zerstört und verschwinden, weil ihnen das System nicht einschätzbar erscheint. Deshalb ist es für Systeme, die von Laien genutzt werden, essentiell, daß solche Fälle korrekt abgefangen werden.

Sprich: Alle nicht zu 100 % korrekten Urls sollten mit einem Http-Status 404 und mit einem eindeutig anderen Inhalt (rote Fehlermeldung: Die Daten sind inkonsistent) oder einer Weiterleitung auf eine korrekte Adresse bzw. ein Inhaltsverzeichnis beantwortet werden. Innerhalb der NET-Architektur lassen sich solche Dinge realisieren, deshalb ist das auch in server-daten drin und wird von mehreren Kunden genutzt. Bei PHP / Mod-Rewrite könnte es sein, daß die Trennung in diese zwei verschiedenen Werkzeuge zu gewissen Unübersichtlichkeiten führt.
 
QUOTE - dass die mitgliederpages über members.dummy.ch/dummy aufgerufen werden können
(i.e. /dummy auf mitglied=dummy&page=einstieg und z.B. /dummy/page1 auf mitglied=dummy&page=page1)


Probier das mal so:


CODE RewriteEngine on

RewriteCond %{HTTP_HOST} members\.dummy\.ch
RewriteRule ^([^/^\.]+)$ mitglieder_hp.php?mitglied=$1&page=einstieg
RewriteCond %{HTTP_HOST} members\.dummy\.ch
RewriteRule ^([^/^\.]+)/([^/^\.]+)$ mitglieder_hp.php?mitglied=$1&page=$2



QUOTE - dass diese adresse members.dummy.ch/dummy wärend der navigation auf der mitgliederpage bestehen bleibt, nicht aber bei der navigation auf dummy.ch


Edit: ich hab's jetzt denke ich doch verstanden: dass nur auf members.dummy.ch /dummy intern rewritet wird (?) - die Bedingung habe ich oben im Code als RewriteCond integriert


QUOTE - dass google und andere suchmaschinen diese mitgliederhomepages indexieren können


Das ist dann noch eine Sache der Verlinkung
 
Danke für die Tipps

Das war dann doch einfacher als ich gedacht habe - es läuft schon.

mod_rewrite scheint auch keine zusätzlichen probleme mit der Security zu schaffen, wenn die Scripte schon abgesichert sind.

Jetzt muss ich nur noch programmieren...


 
Zurück
Oben