| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Affine Abbildung Registriert seit: Feb 2002 Ort: Bremen
Beiträge: 15.089
| Tutorial: .htaccess Schutz für jegliche Dateien ( für Fortgeschrittene) .htaccess Schutz für jegliche Dateien ( für Fortgeschrittene) Ich kann nicht genau sagen, welche Anforderung es braucht, um dies zu nutzen, bei mir hat es gedauert, aber ich musste es mir ja zusammenstricken, wohingegen Ihr mein Tutorial nehmen könnt PHP wird hier nicht zwangsweise benötigt, sollte aber für einen vollständigen Schutz beherrscht werden und mindestens rudimentär Verstanden werden. Ich führe hier zwei Arten eines Schutzes vor. Voraussetzung ist, dass Ihr wisst, was ein Server ist und wie man bereits mit .htaccess umgeht. Ich verweise auf SelfHTML Das ist sehr gut! Für alle, die Erfahrung haben, hier weiterlesen: Erste Version: Also, im ersten Beispiel verwende ich .htaccess mit dem Mod_Rewrite Modul, welches für mich ein Optimum darstellt. (Lokal bitte Mod_Rewrite in der httpd.conf vom Apache auskommentieren.) Kurzer Ablauf des Problems: Sensible Daten sollen nur für registrierte oder private User verwendet werden, können diese nicht in eine Datenbank gepackt werden, wie z.B. Bilder, muss man diese extern schützen. Ich gehe von zwei Möglichkeiten aus, erstens: User kommt normal per Link durch PHP oder durch sonst was, muss sich einloggen usw. und wird ggf. dann zu den Bildern(ich nehme in meinem Beispiel Bilder) geleitet. Alles kein Problem, den Passwortschutz der PHP Scripte will ich nicht näher ansprechen, dies kann man nachholen, in dem man z.B. PHP lernt .Jetzt zum Problem (zweite Möglichkeit): Wenn jemand nun den Pfad zum Bild direkt kennt, sei es, der eingeloggte User verrät es, indem er mit der rechten Maustaste auf das Bild klickt oder wenn man irgendwoher sonst die URL kennt, so kann PHP diese Bilder regulär nichtm ehr schützen, da es komplett an der PHP vorbei geht. Hier kommt die erste, gute Variante ins Spiel. Wir haben den Ordner http://meine-adresse.de/privat/bilder/ , in den Bilder Ordner tun wir jetzt die folgende .htaccess Datei rein: Code: RewriteEngine on Options FollowSymLinks RewriteRule .* ../check.php [NC] Erstellt jetzt eine PHP Datei mit dem Namen check.php, und fügt diesen Inhalt dort komplett ein: PHP-Code: Ruft jetzt mal Testweise den Ordner /bilder/testbild.jpg auf, es spielt keine Rolle, dass das Bild nicht existiert, wenn im Browser "Ungültige Angabe" oder sogar das Bild erscheint (falls Ihr dort eins mit dem Namen testbild.jpg eingefügt habt), so funktioniert die .htaccess tadellos, wenn nicht, müsste ein "Internal Server Error 500" kommen, dass bedeutet, der Server nimmt eure .htaccess nicht an, entweder ist Mod_Rewrite nicht an, oder es liegt ein anderer Fehler vor, aber dass ist erstens nicht Teil dieses Tutorials und zweitens kein Problem, dann geht Ihr einfach zur zweiten Version meines .htaccess Tutorials. Kleine Erklärung: Ruft man irgend ein Bild im Ordner /bilder/ auf, so wird in jedem Fall eine Umleitung zur check.php geschickt, ohne Ausnahme. Die check.php, hier eine sehr simple, prüft, ob das Bild „testbild,jpg“ heißt, oder nicht, wenn nicht, dann kommt "Ungültige Angabe", wenn es doch existiert, dann kommt readfile zum Einsatz und gibt das Bild sofort aus. Vielleicht wundert sich jemand, warum ich dort ".".$_SERVER... geschrieben habe, das ".". ist nötig, weil $name nur noch den Namen des Bildes enthält, und mit readfile($name) würde das PHP Script versuchen das jeweilige Bild aus dem Ordner zu holen, wo die check.php liegt, und da gibt es das Bild ja nicht. Dieser Pfad muss immer an den jeweiligen Pfad angepasst werden! P.S: Man sollte eventuell vor der Ausgabe einer JPG Datei, den header('Content-type:image/jpeg'); setzen oder halt die nötigen header für die jeweilige Dateiausgabe optimieren, denn es kann sein , dass sonst das Bild als ASCII (Plain Text) ausgegeben wird und dass ist nicht zu gebrauchen. Meine check.php kann man, oder besser gesagt, sollte man durch eine gescheite Passwort Abfrage ändern, dies hier ist nur ein Beispiel, wichtig ist die Verwendung von readfile!!! Zweite Version: Es gibt viele Webhoster, die das Mod_Rewrite Modul nicht aktiviert haben, man kann denen eine Mail schreiben oder meine Alternative nutzen. Vorraussetzung ist, dass der Server allgemein .htaccess Passwortabfragen zulässt, was aber in der Regel der Fall ist. Es verläuft im Grunde alles analog zum ersten Beispiel, der Unterschied ist nur, dass in dem Falle keine Umleitung auf die check.php erfolgt, wenn man die direkte URL eingibt. Ist zwar nicht so schön, aber .htaccess via Browser zu knacken würde ein Weilchen dauern. Es gibt unzählige Tutorials, wie man mit .htaccess ein Passwortbereich aufbaut, daher will ich das Rad nicht neu erfinden, sondern verweise wieder auf http://selfhtml.teamone.de/diverses/htaccess.htm Die .htaccess Datei müsste jetzt ungefähr so aussehen: Code: AuthName "geschuetzer Bereich" AuthType Basic AuthUserFile /home/meine-adresse/private/.htpasswd require valid-user Die .htpasswd Datei setzt sich aus PASSWORT:mit_crypt_codiertes_passwort zusammen. Der springende Punkt ist, dass eine PHP Datei, welche die Verwaltung übernimmt, die Datei nur mit readfile lesen kann. Die zweite, hier verwendete, Methode ist keine Verbesserung oder Neuerung des Scriptes. Die Methode soll nur zeigen, wie man ohne die Rewrite Engine an sein Ziel kommt. Fazit: Beides sind gute Methoden um den unautorisierten Zugriff mit der direkten Methode zu unterbinden. Ich bedanke mich bei mal_anders für das Mitlösen des Problems. Fragen und Anregungen bitte hier posten In den beiden Beispielen müsst Ihr die x.htaccess Datei umbenennen in .htaccess. Achtung: Bei der .htaccess muss man den Pfad richtig anpassen und evtl. das x bei x.htaccess entfernen. Bei Windows lokalen Servern müsst Ihr in der httpd.conf den Wert für .htaccess zu x.htaccess umbenennen, da Windows Dateinamen, die mit einem Punkt anfangen, kaum verarbeiten kann. Username und Passwort für die htaccess2 Beispiele ist User "test" und Passwort "test". Beide Beispiele sind sofort verwendbar, einfach uploaden und im Browser aufrufen. Beides wurde von mir getestet. Ich weise darauf hin, dass das anapssen der .htaccess Pfade ein Problem für unerfahrene User sein kann MM Edit: die beispieldaten zu diesem tutorial befinden sich weiter unten (im 10. beitrag)
__________________ Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben? If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net Hier ruhn meine Gebeine - ich wollt, es wären Deine. Try to look unimportant, they may be low on ammo! Was ist euer Lieblings-Datentyp? Schreibt mir! Geändert von Samuel (28-02-2004 um 10:46 Uhr) |
| | |
| | #2 (permalink) |
| schnarchnase Registriert seit: Jan 2002 Ort: konstanz
Beiträge: 2.953
|
gute idee ... vergiss aber RewriteBase nicht, sonst funktioniert es nur auf der hälfte der server ![]() kleines manko an dem ganzen: das problem, dass bilder nicht direkt angesehen werden können, hast du wohl gelöst. die performance dürfte auch sehr schnell sein. der aufruf http://meine-adresse.de/privat/bilder/testbild.jpg ist aber trotzdem noch ungesichert und kann in beiden fällen auch von jedem nicht-eingeloggten benutzer ausgeführt werden. damit bleibt die schwierigkeit, dass man bilder nur schützen kann, wenn die überprüfung des gültigen logins auch in der check.php stattfindet - und das erzeugt einen oftmals den nutzen übersteigenden overhead.
__________________ perlen vor die säue. Geändert von rechtschreibfan (27-02-2004 um 23:37 Uhr) |
| | |
| | #3 (permalink) |
| Affine Abbildung Registriert seit: Feb 2002 Ort: Bremen
Beiträge: 15.089
|
privat/privat/testbild.jpg soll dadurch ungeschützt sein? Ich verstehe nicht, was du meinst, immerhin liegt das bild bei privat/bilder/testbild.jpg Und mit privat/privat/testbild.jpg wird doch nicht mal die htaccess angeschmissen, da diese nur in /bilder/ wirkt, es müsste da doch eher stumpf n 404 kommen, da diese datei nicht existiert
__________________ Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben? If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net Hier ruhn meine Gebeine - ich wollt, es wären Deine. Try to look unimportant, they may be low on ammo! Was ist euer Lieblings-Datentyp? Schreibt mir! |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Oct 2003
Beiträge: 63
|
Irgendwie funktioniert das bei mir nicht.... Warning: readfile(./privat/bilder/testbild.jpg): failed to open stream: No such file or directory in /is/htdocs/47714/www.bitcheck.de/privat/check.php on line 4 http://www.bitcheck.de/privat/bilder/testbild.jpg Also er leitet auf die PHP um, aber kann dann umgekehrt irgendwie nicht auf das JPG zurückgreifen.... ? Ordner-/Dateistruktur: privat/check.php privat/bilder/testbild.jpg privat/bilder/.htaccess Geändert von Basti2003 (28-02-2004 um 09:33 Uhr) |
| | |
| | #7 (permalink) | |
| Neuer User Registriert seit: Oct 2003
Beiträge: 63
| Zitat:
Hatte meinen Beitrag nochmal editiert,... Das Bild existiert nämlich ![]() ___ Wenn ich es direkt mit PHP-Code: EDIT (2): Jetzt gibt er oben noch den "Pfad" aus, den er übergeben bekommt... Aber warum geht das nicht ?? privat/check.php PHP-Code: PHP-Code: Geändert von Basti2003 (28-02-2004 um 09:59 Uhr) | |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Oct 2003
Beiträge: 63
|
Fehler gefunden.... PHP-Code: EDIT: Ich sollte nicht immer so vorzeitig posten *g*, hat sich auch erledigt... Nun nochmals vielen Dank und jetzt hör ich auch auf, den Thrad hier so voll zu posten Geändert von Basti2003 (28-02-2004 um 10:08 Uhr) |
| | |
| | #9 (permalink) |
| Affine Abbildung Registriert seit: Feb 2002 Ort: Bremen
Beiträge: 15.089
|
Das mit .. Punkten kann auch sein, lokal hat es mit einem Funktioniert und Online konnte ich es nicht testen, da mein Account kein Rewrite Modul hat. Aber wie gesagt, man muss den Pfad anpassen ![]() @rechtschreibfan: Vielleicht stehe ich auf dem Schlauch, aber was meinst du mit: direktem Pfad eingeben überbrückt die check.php? Das ganze Tutorial zielt doch darauf, dass es dies eben nicht tut ![]() Edit: Oberen Beitrag habich geändert, denn der "." ist nur dann richtig, wenn die Verschachtelung der Ordner nicht groß ist, d.h. je mehr Subordner man von der Eigentlichen URL man entfernt ist, desto länger wird die REQUEST_URI und dementsprächend muss man dies dann auch anpassen.
__________________ Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben? If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net Hier ruhn meine Gebeine - ich wollt, es wären Deine. Try to look unimportant, they may be low on ammo! Was ist euer Lieblings-Datentyp? Schreibt mir! Geändert von Samuel (28-02-2004 um 10:48 Uhr) |
| | |
| | #10 (permalink) |
| Affine Abbildung Registriert seit: Feb 2002 Ort: Bremen
Beiträge: 15.089
|
Intelligenter weise hab ich natürlich auch die Beispiele vergessen on zu stellen ![]() Also hier sind sie Interessant ist, dass ich im Thread was von beispielen schreibe, aber niemand fragt, wo die sind ![]() ...
__________________ Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben? If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net Hier ruhn meine Gebeine - ich wollt, es wären Deine. Try to look unimportant, they may be low on ammo! Was ist euer Lieblings-Datentyp? Schreibt mir! |
| | |
| | #11 (permalink) | |
| mein baby Registriert seit: Jul 2002 Ort: Weimar
Beiträge: 1.443
|
dann will ich auch noch schnell meinen senf dazu geben. gehört zum thema "htaccess" und ist sicher für viele interessant, hoffe ich WIE GESTALTE ICH MEINE EIGENE FEHLERSEITE ODER LEITE GGF. UM. zum einen kann man damit die hässliche, vom server bereitgestellte fehlerseite, umgehen oder aber, wenn man vielleicht komplett die struktur einer page geändert hat, umleiten zur richtigen seite. das ist vor allem dann hilfreich, wenn in suchmaschinen noch alte seiten indexiert sind. und was ist ärgerlicher für den user, als auf eine blöde weiße seite zu gelangen Diese Seite kann nicht angezeigt werden -> htacces anlegen mit folgenden inhalt: ErrorDocument 400 /error.php?error=400 ErrorDocument 401 /error.php?error=401 ErrorDocument 402 /error.php?error=402 ErrorDocument 403 /error.php?error=403 ErrorDocument 404 /error.php?error=404 ErrorDocument 500 /error.php?error=500 die ins unterste verzeichnis eures host. error.php erstellen und dort nach belieben reinschreiben was passieren soll. man könnte sich dann auch gleichzeitig ne mail schicken lassen worin z.b. der referer oder die request_uri verschickt wird, dann weiß ich gleichzeitig, was schief gelaufen ist. aber da sind euren phantasien keine grenzen gesetzt. Zitat:
__________________ musse rühre, musse probiere=>iss a pulsgeber ! Geändert von mal_anders (02-03-2004 um 15:48 Uhr) | |
| | |
| | #12 (permalink) |
| Affine Abbildung Registriert seit: Feb 2002 Ort: Bremen
Beiträge: 15.089
|
Danke für deinen Senf
__________________ Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben? If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net Hier ruhn meine Gebeine - ich wollt, es wären Deine. Try to look unimportant, they may be low on ammo! Was ist euer Lieblings-Datentyp? Schreibt mir! |
| | |
| | #15 (permalink) | ||
| Neuer User Registriert seit: Mar 2004
Beiträge: 3
|
also, ich hab nun bei meinem webspace variante 2 angewandt! ich möchte eine einzige datei schützen und diese liegt direkt im ersten verzeichnis des verzeichnisbaumes. ich habe dann eine .htaccess und eine .htusers angelegt: Zitat:
Zitat:
was mach ich falsch? | ||
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
LinkBacks (?)
LinkBack zu diesem Thema: http://www.flashforum.de/forum/php-und-mysql/tutorial-htaccess-schutz-fuer-jegliche-dateien-fuer-fortgeschrittene-117151.html | ||||
| Erstellt von | Für | Art | Datum | Hits |
| bilder aus PW gesichertem Ordner laden | Dieses Thema | Refback | 11-10-2009 22:52 | 4 |