PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   .htacess zugriffsproblem (http://www.selfphp.de/forum/showthread.php?t=22264)

Bodo06 18.10.2009 11:20:53

.htacess zugriffsproblem
 
Guten Morgen Community,

Ich habe das folgende Problem und sitze seit 3 Tagen erfolglos an einer Lösung:

Ich schreibe gerade mit PHP ein CMS.

Jetzt möchte ich aber einzelne ordner in dem verzeichnis, wo die index.php liegt, schützen, sodass nur die index.php die in den ordnern befindlichen Dateien aufrufen kann.

Die ist meine Orderstruktur:

httpdocs/admin
httpdocs/class
httpdocs/email
httpdocs/func
httpdocs/images
httpdocs/install
httpdocs/layout
httpdocs/modules
httpdocs/systemmodules
httpdocs/tmp
httpdocs/index.php
httpdocs/stylesheet.css

besonders die ordner images/ und layout/ möchte ich mit .htaccess schützen, sodass man diese dateien nicht mit vollständiger URL im Browser eingeben kann.

Mir ist es im Endeffekt egal, ob zu einer anderen Seite weitergeleitet wird oder ein 500er Fehler kommt.

Ich habe schon diverse Scripte ausprobiert, mit mehr oder weniger Erfolg.

Hauptproblem: Der Zugriff wird komplett gesperrt, das ich ja richtig. Aber nun wird auch der index.php der Zugriff verweigert, die diese Dateien mit <img> und include() einbindet.

Hat jemand einen vorschlag oder eine Idee, wie sich dieses Problem lösen lässt?
Hoffe auf eure Hilfe :)
vlg Bodo


edit: ich hoffe, ich habe das forum richtig gewählt? *zwinker* :)

vt1816 18.10.2009 11:31:46

AW: .htacess zugriffsproblem
 
Hallo und willkommen hier im Forum.

Und wie sieht (jeweilige) Deine .htaccess-Datei aus?

cortex 18.10.2009 12:07:42

AW: .htacess zugriffsproblem
 
anderer / besserer (?) vorschlag:

schmeiss nicht alles in einen ordner, sondern separiere öffentlich zugängliche inhalte (aufruf durch browser wie index.*, *.css, *.js, *.jpg) von "anwendungsdateien".

resourcen, die nicht "von aussen" zugänglich sein müssen / dürfen, werden in einen ordner oberhalb des webroots gespeichert; bsp.:

projekt\app\admin
projekt\app\class
projekt\app\email

alle anderen resourcen werden unterhalb des webroots abgelegt:

projekt\httpdocs\index.php
projekt\httpdocs\stylesheet.css

cx

Bodo06 18.10.2009 12:34:30

AW: .htacess zugriffsproblem
 
Hallo vt1816,

Also im Moment ist meine .htaccess leer, weil ja sonst nichts gehen würde :D


Ahm... Also so ungefähr sah sie mal aus, Da konnte man alles nur mit eingeben des Administrator Passwortes sehen. War so schon richtig, nur muss die Index.php ja alles aufrufen dürfen :D
Code:

authType      basic
authName      'Geschützter Bereich'
authUserFile  /func/.htuser
order        deny,allow
deny from    all
satisfy      all
require Administrator

<File index.php>
order deny,allow
allow from all
</Files>

edit: Danke für den Vorschlag Cortex.Ich habe über derartiges bereits nachgedacht, aber den Gedanken wieder verworfen, weil es die Übersichtlichkeit extrem einschränkt, und soweit geht es ja, nur dass die Index.php nicht richtig funktioniert.

Edit2: Hab die .htaccess mal hochgeladen, hier das ergebnis: http://webtouch-messenger.com/

Bodo06 18.10.2009 21:07:58

AW: .htacess zugriffsproblem
 
Hmm... wäre es vllt eine bessere Idee, einfach alle zugriffe auf die Ordner, die man als normaler User nicht einsehen darf, auf eine forbidden datei umzuleiten?

Code:

Redirect /class forbidden/forbidden.html
Redirect /email forbidden/forbidden.html
Redirect /func forbidden/forbidden.html
Redirect /images forbidden/forbidden.html
Redirect /layout forbidden/forbidden.html
Redirect /modules forbidden/forbidden.html
Redirect /systemmodules forbidden/forbidden.html
Redirect /tmp forbidden/forbidden.html
Redirect stylesheet.css forbidden/forbidden.html

Ich denke, das würde das Problem lösen, oder?

cortex 19.10.2009 09:17:21

AW: .htacess zugriffsproblem
 
nunja, eine machbare, wenn auch primitive vorgehensweise. gerade bei komplexen projekten kann das unübersichtlich werden. wenn schon so, würde ich alle zugriffe sperren und die erlaubten resourcen per whitelist freigeben.

der code

Code:

Redirect stylesheet.css forbidden/forbidden.html
führt dazu, dass die css-datei nicht mehr erreichbar ist - auch nicht durch den browser beim rendern der seite. das willst du sicher nicht...

Zitat:

Zitat von Bodo06 (Beitrag 131486)
Danke für den Vorschlag Cortex.Ich habe über derartiges bereits nachgedacht, aber den Gedanken wieder verworfen, weil es die Übersichtlichkeit extrem einschränkt, und soweit geht es ja, nur dass die Index.php nicht richtig funktioniert.

du musst deine sichtweise ändern. ein projekt besteht nunmal aus öffentlich zugänglich und nicht öffentlich zugänglichen resourcen. an dieser stelle eine trennung herbeizuführen, erhöht nicht nur die übersichtlich und kontrolle, sondern wird auch i.a. als grundlegende sicherheitsmaznahme empfohlen.

cx

Bodo06 19.10.2009 16:05:49

AW: .htacess zugriffsproblem
 
Zitat:

Zitat von cortex (Beitrag 131508)
nunja, eine machbare, wenn auch primitive vorgehensweise. gerade bei komplexen projekten kann das unübersichtlich werden. wenn schon so, würde ich alle zugriffe sperren und die erlaubten resourcen per whitelist freigeben.

Kay. Hm, Whitelist. ich glaube, das ist genau das was ich brauche, es soll ja, außer der index.php, niemand drauf zugreifen dürfen, auf keine Datei.

Zitat:

Zitat von cortex (Beitrag 131508)
der code

Code:

Redirect stylesheet.css forbidden/forbidden.html
führt dazu, dass die css-datei nicht mehr erreichbar ist - auch nicht durch den browser beim rendern der seite. das willst du sicher nicht...

Nein, durchaus nicht^^

Zitat:

Zitat von cortex (Beitrag 131508)
du musst deine sichtweise ändern. ein projekt besteht nunmal aus öffentlich zugänglich und nicht öffentlich zugänglichen resourcen. an dieser stelle eine trennung herbeizuführen, erhöht nicht nur die übersichtlich und kontrolle, sondern wird auch i.a. als grundlegende sicherheitsmaznahme empfohlen.

cx

Arw... Yeah, Problem erkannt, Gefahr gebannt... Die einzige Datei, auf die man zugreifen darf, ist die index.php und der ordner /admin, aber das wäre leicht auch per subdomain regelbar....

Magst du mir einmal ein Beipsiel posten, wie solch eine Whitelist aussehen könnte, die den einzigen Zugriff der im darüberliegenden Ordner index.php erlaubt? Dank dir :)

cortex 19.10.2009 17:39:14

AW: .htacess zugriffsproblem
 
Zitat:

Zitat von Bodo06 (Beitrag 131533)
Magst du mir einmal ein Beipsiel posten, wie solch eine Whitelist aussehen könnte [...]

hab ich gerade nicht auf tasche - sorry. denke aber, dass du das selbst hinbekommst - sollte ein klacks sein, wenn du dich bereits an die programmierung eines cms wagst .-

cx

Bodo06 19.10.2009 18:23:37

AW: .htacess zugriffsproblem
 
Hmm, okay. Du sprichst jetzt von einer Whitelist in PHP oder in .htaccess?
Mit PHP beschäftige ich mich seit 4 Jahren, mit .htaccess seit genau 4 :)

Ich werd google nocheinmal penetrieren ;)

Bodo06 20.10.2009 18:57:02

AW: .htacess zugriffsproblem
 
Guten Abend Community,

Ich habe das Problem nun gelöst.

Problem hierbei war, dass ich ALLE Design und Struktur Dateien schützen wollte, also auch JS und CSS Dateien. Dies ist jedoch nicht möglich, da sie von der index über HTTP eingebunden werden, sprich unter Berücksichtigung der .htaccess.

Im Endeffekt kann man eh jeden HTML, JS und CSS code klauen, weil letztendlich alles auf der Festplatte des Users liegt, die Dateien werden von der .html/.php datei mitgesendet. Den Zugriff auf diese Dateien zu verbieten ist demnach so gut wie sinnlos :D

Lösung:

Ich habe mir die Server/Client Struktur zu nutze gemacht. Die include()-Funktion von PHP ist ja völlig unabhängig von irgendeiner .htaccess zugriffskontrolle, weil es sich dabei ja um einen direkten Dateizugriff handelt, htaccess schützt ja den HTTP zugriff.

Nun habe ich in jedem Ordner, den man nicht einsehen dürfen soll, diese .htaccess datei abgelegt:
Code:

deny from all
=Schützt jede Datei in dem Ordner vor Zugriffen. Ist, wie oben beschreiben, nicht schlimm, PHP interessiert das nicht.

den ordner /func musste ich speziell behandeln, weil er folgende Datenstruktur hat:
Code:

func/css                            //Ordner mit .CSS Dateien
func/functions                    // PHP Funktionen
func/js                              //JS Dateien
func/#body.php
func/#database.php          //Verschiedene wichtige Dateien
func/#emailsettings.php
func/#functions.php
func/#head.php
func/#panel.php
func/#settings.php
func/info.php

JavaScript, CSS und PHP in einem Ordner. Auch nicht weiter schwierig:
Code:

<Files *.php>
deny from all
</Files>

Nun habe ich Mein Problem gelöst, auch wenn es nicht ganz das war was ich wollte, aber das ist leider nicht realisierbar :DD

Hoffe das hilft einem suchenden Weiter ;))

Viele liebe Grüße
Bodo


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:15:29 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.