Nur ein Unterverzeichnis von htdocs fürs Internet freigeben

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Nur ein Unterverzeichnis von htdocs fürs Internet freigeben

Postby Croydon » 08. August 2012 20:08

Hallo,
ich habe folgende Situation: Ich habe erfolgreich XAMPP 1.8.0 auf Windows 7 64-bit installiert (eine ältere Version von XAMPP hatte ich bereits länger). XAMPP läuft wie es soll, auch habe ich erfolgreich Port 80 freigegeben. Sprich der Inhalt des htdocs-Verzeichnis ist nun über meine IP-Adresse im Internet zugänglich.

Nun würde ich es gerne realisieren, dass nicht der gesamte Inhalt des htdocs-Verzeichnisses übers Internet aufrufbar ist, sondern nur der Inhalt eines Unterverzeichnisses von htdocs. Also z. B. "htdocs/online/".
Nachtrag: Wenn es geht hätte ich es allerdings gerne so, dass wenn ich localhost/ aufrufe weiterhin alle Dateien des htdocs unverändert zugänglich sind.

Bei meiner Suche bin ich auf den Begriff VHOSTS gestoßen, so weit ich das aber verstanden habe, nützt mir das in diesen Fall nichts, oder doch?
Ich hoffe das ihr mir da etwas weiterhelfen könnt und bedanke mich schon mal für eure Mühe. :wink:

Croydon
Croydon
 
Posts: 4
Joined: 08. August 2012 19:14
Operating System: Windows 7 64-bit SP 1

Re: Nur ein Unterverzeichnis von htdocs fürs Internet freige

Postby Altrea » 08. August 2012 21:11

Hallo Croydon,

Ich supporte XAMPP mit Zugriff aus potenziell unsicheren Netzen (hier vor Allem das Internet) nicht, daher werde ich dir keine vorgefertigte Lösung hier präsentieren. XAMPP ist für solche Umgebungen nicht konfiguriert und gerade User mit dem Kenntnisstand eines Anfängers sollten sich dieser Aufgabe nicht stellen, da diese in der Regel nicht fähig sind, die XAMPP Komponenten ausreichend abzusichern.

VHosts sind schonmal ein guter Ansatz um localhost von anderen Zugriffen zu separieren. Ohne penibel genau definierte Zugriffsregeln wird das aber nicht reichen.
Als Ansatz könnte dir das neue XAMPP Security Script dienen.

Ich würde dir aber generell davon abraten.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Nur ein Unterverzeichnis von htdocs fürs Internet freige

Postby Croydon » 13. August 2012 20:39

Ich bin mir durchaus bewusst das XAMPP für diese Dinge nicht vorgesehen ist. Ich denke jedoch, dass ich es schaffe das ausreichend abzusichern. Server-Software (Apache, Linux Server..) sind zwar nur eine Randgruppe meines Wissens, aber ganz ahnungslos bin ich da nicht.

Das du keine Lösungen rausgeben möchtest kann ich gut nachvollziehen. Jedoch habe ich inzwischen eine Lösung gefunden (eigentlich bereits am Tag nach deiner Antwort, aus mehreren Gründen erst jetzt mein Post) und ich persönlich finde es jedes Mal wieder bescheuert, wenn man nach einer Lösung für ein Problem sucht und dann viele Forum-Beiträge findet in denen steht "Lösung gefunden" aber dort mit keinem Wort steht, wie das Problem gelöst wurde. Wenn du also nichts dagegen hast, würde ich meine Lösung mit Erklärung hier noch nachträglich posten.

Zum Sicherheitsproblem kurz und knapp allgemein noch etwas: Selbst wenn man die Zugriffsregeln, wie ich sie nun habe, umgehen könnte, wäre das kein Weltuntergang. Ich habe im htdocs-Verzeichnis keine Dateien, die nicht bereits öffentlich sind oder Dateien, die ich nicht veröffentlichen werde, sobald diese fertig sind. Auch braucht man nach jedem PC-Neustart meine neue IP-Adresse wieder, um darauf zugreifen zu können und Apache läuft bei mir sowieso nur dann, wenn ich es brauche. Weitere Absicherungen habe ich natürlich auch vorgenommen, aber darauf möchte ich jetzt nicht auch noch eingehen.

Update: Ich habe das Ganze nun wie folgt gelöst. In den Verzeichnis apache\conf\extra befindet sich die Datei httpd-vhosts.conf , in dieser Datei kann man (wie man an den Namen bereits sehen kann) VHosts (=VirtualHosts) definieren.

Code: Select all
<VirtualHost localhost>
    DocumentRoot C:/xampp/htdocs/
    DirectoryIndex index.php index.html
    <Directory "C:/xampp/htdocs/">
       Options Indexes FollowSymLinks Includes ExecCGI
       Order allow,deny
       Allow from all
       AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot C:/xampp/htdocs/online
    DirectoryIndex index.php index.html
    <Directory "C:/xampp/htdocs/online">
       Options Indexes FollowSymLinks Includes
       Order allow,deny
       Allow from all
       AllowOverride All
    </Directory>
</VirtualHost>


Der erste VHost bestimmt die Zugriffsregeln in den Fall, wenn man local darauf zugreift. Durch DocumentRoot ist es dann möglich zu bestimmen, auf welchen Verzeichnis man zugreifen darf. In meinen Fall, ist DocumentRoot das Standard-Verzeichnis von Xampp, falls man es local aufruft. Ruft man es hingegen über Port 80 auf (Standard HTTP-Port), dann ist nur das "online"-Unterverzeichnis erreichbar. Port 80 ist in meinen Fall, auch der einzige Port der freigeschalten ist. Wie Altrea bereits erwähnt hatte, muss man allerdings Xampp auch an anderen Stellen abdichten und man sollte Xampp auf keinen Fall, als richtigen Webserver verwenden.

MfG,
Croydon
Croydon
 
Posts: 4
Joined: 08. August 2012 19:14
Operating System: Windows 7 64-bit SP 1


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 41 guests