php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.03.2010, 21:16  
Neuer Benutzer
 
Registriert seit: 01.03.2010
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
meclovin befindet sich auf einem aufstrebenden Ast
Standard Mit PHP auf .htaccess geschützten Ordner zugreifen

Guten Abend liebe PHPler,
ich bin ganz frisch hier und habe auch schon eine Frage .

Ich programmiere zur Zeit einen privaten Image-Uploader.
Nun hat es mich natürlich gestört, dass man einfach so auf den uploads Ordner zugreifen kann (und auch auf die Bilder direkt zugreifen kann).

Folglich habe ich mit htaccess eine Authentifizierung eingebaut.

Code:
AuthUserFile /users/***/www/img/uploads/.htpasswd
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic
Require valid-user
Das klappt nun auch alles ganz gut, allerdings kriege ich jetzt auch so ein Loginfenster zu sehen, wenn ich mir in PHP ein Bild aus dem geschützten Ordner anzeigen lasse (oder auch wenn eine Datei hochgeladen wird).

Ich habe mir schon alles auf dieser Seite des PHP-Manuals hier durchgelesen, allerdings habe ich keine wirkliche Lösung gefunden
(PHP: HTTP-Authentifizierung mit PHP - Manual).


Es wäre toll, wenn mir jemand helfen kann, schließlich soll man ja nur zum Eingeben eines Passwortes aufgefordert werden, wenn man direkt auf den uploads Ordner zugreift.

Achja, ich habe es auch schon mit Redirect Permanent probiert, allerdings weiß ich da auch nicht genau, wie ich es einstellen kann, dass nur die Clients weitergeleitet werden, das PHP-Skript allerdings nicht.
(Redirect Permanent /img/uploads/ /img/viewer.php?id=)

Viele Grüße
MeCLovin
meclovin ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.03.2010, 21:20  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Kann eigentlich nicht sein.
Zitat:
wenn ich mir in PHP ein Bild aus dem geschützten Ordner anzeigen lasse (oder auch wenn eine Datei hochgeladen wird).
Bitte mal zeigen, wie das vor sich geht.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:20  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Es wäre toll, wenn mir jemand helfen kann, schließlich soll man ja nur zum Eingeben eines Passwortes aufgefordert werden, wenn man direkt auf den uploads Ordner zugreift.
Das ist so in der Form im Kontext von PHP nicht möglich.
Wenn das ganze privat ist kannst du das nur mittels login regeln und die dateien durch ein php-script durchjagen, das die dateien aus einem geschützen ordner (DENY FROM ALL, oder von aussen unsichtbar über dem doc_root) liest und ausgibt wenn de user authentifiziert ist.

Sämtliche Ansätze mit Weiterleitungen passieren ja schon auf http-ebene also zwischen server und browser, das klappt so nicht.
robo47 ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:28  
Neuer Benutzer
 
Registriert seit: 25.10.2009
Beiträge: 23
PHP-Kenntnisse:
Fortgeschritten
Babbsdrebbler befindet sich auf einem aufstrebenden Ast
Standard

Naja das ist nicht sehr sinnvoll die Idee.

Entweder du ließt das Bild per PHP ein oder du schaltest einfach das Directory Listing per htaccess aus.
Babbsdrebbler ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:30  
Neuer Benutzer
 
Registriert seit: 01.03.2010
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
meclovin befindet sich auf einem aufstrebenden Ast
Standard

Hier habe ich das Ganze mal für euch hochgeladen
ImageUp
ImageUp

Und hier mal ein Teil des Inhaltes der viewer.php

PHP-Code:
<?php include ('config.php');

if (isset(
$_GET['id'])) {
    
$id $_GET['id'];
    if (
$id != "") {

        
$size getimagesize("uploads/".$id);
        
        if(isset(
$_GET['g'])) {
            if (
$_GET['g'] == 0) {
                
header("Content-type: {$size['mime']}");
                
$si fopen("uploads/".$id"rb");
                
fpassthru($si);
                exit;
            }
        }
        
        
        
        
$width $size[0];
        
$height $size[1];

        
$showwidth $width;
        
$showheight $height;

        if (
$width $maxwidth) {
            
$divide $width/$maxwidth;
            if ((
$height/$divide) > $maxheight) {
                
$divide $height/$maxwidth;
                
$showheight $maxheight;
                
$showwidth $width/$divide;
            }
            else {
                
$showwidth $width/$divide;
                
$showheight $height/$divide;
            }
        }
        echo 
"<center><a href=\"viewer.php?id=".$id."&g=0\"><img style=\"border: 0px;\" src=\"uploads/".$id."\" width=\"".$showwidth."\" height=\"".$showheight."\" /></a>
        <br />Skaliert auf "
.$showwidth."x".$showheight." (Original: ".$width."x".$height.")</center><br /><hr />";
    }
}
?>

Geändert von meclovin (01.03.2010 um 21:33 Uhr).
meclovin ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:32  
Neuer Benutzer
 
Registriert seit: 25.10.2009
Beiträge: 23
PHP-Kenntnisse:
Fortgeschritten
Babbsdrebbler befindet sich auf einem aufstrebenden Ast
Standard

Wie gesagt, schalte das Directory Listing ab, dann kann man nur noch direkt auf die Dateien zugreifen und muss wissen wie sie heißen.
Babbsdrebbler ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:37  
Neuer Benutzer
 
Registriert seit: 01.03.2010
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
meclovin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Babbsdrebbler Beitrag anzeigen
Wie gesagt, schalte das Directory Listing ab, dann kann man nur noch direkt auf die Dateien zugreifen und muss wissen wie sie heißen.
Was für Verfahren benutzen denn größere Seiten? Speichern die ihre Daten in MySQL oder wie stellen die das an?

Danke für den Tip mit dem Directory Listing, die Dateinamen werden ja sowieso mit 6 Zufallszeichen versehen, somit sollte das Verfahren ziemlich sicher sein !
meclovin ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:41  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Und hier mal ein Teil des Inhaltes der viewer.php
Der Zugriff ist kein Problem. Problematisch ist die Darstellung via <img>-Tag, das dann einen regulären HTTP-Request auf die Ressource startet und damit Auth anfeuert.
Du könntest alternativ als Source ein php-Script angeben, das die Bilddaten durchschleift. Dort musst Du dann natürlich wiederum einen Zugriffsschutz implementieren, bspw. abhängig von der Session..
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:44  
Neuer Benutzer
 
Registriert seit: 01.03.2010
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
meclovin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Der Zugriff ist kein Problem. Problematisch ist die Darstellung via <img>-Tag, das dann einen regulären HTTP-Request auf die Ressource startet und damit Auth anfeuert.
Du könntest alternativ als Source ein php-Script angeben, das die Bilddaten durchschleift. Dort musst Du dann natürlich wiederum einen Zugriffsschutz implementieren, bspw. abhängig von der Session..
Vielen Dank, jetzt habe ich verstanden, wieso es nicht funktioniert , dann werde ich es jetzt mal ohne einen img-Tag probieren und die Daten von php einlesen lassen.

P.S.: Wirklich toll, wie schnell man hier eine Antwort bekommt, vielen Dank an alle


Nachtrag:
Könnte ich einfach, so wie ich es oben im Code einmal gemacht habe, eine PHP-Datei erstellen, welche das Bild als Content-Type: image/ .. ausgibt und diese Datei dann in meinen Viewer einbinden?

PHP-Code:
header("Content-type: {$size['mime']}");
                
$si fopen("uploads/".$id"rb");
                
fpassthru($si); 

Geändert von meclovin (01.03.2010 um 21:49 Uhr).
meclovin ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:49  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von meclovin Beitrag anzeigen
Was für Verfahren benutzen denn größere Seiten? Speichern die ihre Daten in MySQL oder wie stellen die das an?

Danke für den Tip mit dem Directory Listing, die Dateinamen werden ja sowieso mit 6 Zufallszeichen versehen, somit sollte das Verfahren ziemlich sicher sein !
Was ist sicher ? Ist für dich Sicherheit einfach nur die Unwissenheit des Dateinames ? Sprich JEDER der den Namen kennt, kann das bild anschauen ? das ist für mich imho weit von "privat" entfernt.
Wenn man von privat redet erwarte ich, dass diese bilder auch NUR Leute sehen können die das dürfen.

Größere Seiten regeln das je nach größe einfach darüber den Authentifizierungsmechanismus des Software (Forum oder was auch immer) zu nutzen und die bilder durch PHP durchzuschleifen, dabei werden überprüft ob der user eingeloggt ist und zugriffsrechte hat. Die dateien selbst liegen so dass man sie nicht direkt via http ansprechen kann.

Wenn eigene(r) Server zur Verfügung stehen kann man das ganze noch etwas beschleunigen/verbessern indem man z.b. mod_xsendfile bzw. das lighttpd-pendant nutzt (nicht für webhosting-systeme geeignet!) nutzt und das komplette senden der datei dabei dem webserver überlässt.
robo47 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
200k ordner im ordner problemlos möglich? Matthiasnet Server, Hosting und Workstations 13 13.08.2008 21:44
Zugriff mit session auf Ordner begrenzen Diego1978 PHP Tipps 2008 1 08.07.2008 06:38
[Erledigt] PHP -&gt; Ordner anlegen der sich auch beschreiben lässt?! Nightuser PHP Tipps 2008 13 30.06.2008 23:51
Serverbeschränkung (Ordner beschränkung) triopsi Server, Hosting und Workstations 2 29.04.2008 17:07
auf Ordner unter dem Root Verzeichnis zugreifen knyght PHP Tipps 2008 7 08.09.2007 10:22
.htpasswd (im geschützten Ordner!) per skript ändern! Funky_ PHP Tipps 2006 8 22.07.2006 18:03
TreeMenu Fatal Error PHP Tipps 2006 8 07.04.2006 11:22
.htaccess // alles sperren außer einem Ordner JEGO PHP Tipps 2006 6 21.02.2006 19:23
Sichere Vebindung mit MySQL & .htaccess erstellen + Vars PHP Tipps 2005 8 17.03.2005 16:56
mit Skript auf geschützten Bereich zugreifen Olsen PHP-Fortgeschrittene 5 30.12.2004 14:36
via PHP auf mit .htaccess geschütztes Verzeichnis zugreifen robo47 PHP Tipps 2004 6 22.10.2004 15:57
ordner in einem verzeichnis auslesen und anzeigen lindner PHP Tipps 2004 5 19.08.2004 00:03
WebFTP: php denkt die ordner wären dateien... phpfortgeschrittener PHP Tipps 2004 15 09.08.2004 18:38
Problem mit .htaccess und php PHP Tipps 2004 2 05.07.2004 14:06
Ordner lesen --> Baumstruktur --> Problem PHP Tipps 2004 0 30.06.2004 17:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ordner zugriff nur mit php, http://www.php.de/php-fortgeschrittene/65259-mit-php-auf-htaccess-geschuetzten-ordner-zugreifen.html, php geschützte verzeichnisse, php geschützter ordner, bild aus geschütztem verzeichnis anzeigen php, bilder aus geschütztem ordner anzeigen, php bilder aus geschütztem verzeichnis anzeigen, bild geschützter bereich php, htaccess zugriff nur via php, php zugriff geschützter ordner, mit php auf geschützten ordner zugreifen, php bild aus geschütztem verzeichnis anzeigen, geschützter ordner php, php zugriffsschutz, php zugriff geschützte ordner, auf htaccess verzeichnis mit javascript zugreifen, htaccess ordnerzugriffsrecht, mit php in htaccess-geschützte verzeichnisse, php script in geschütztem verzeichnis, redirect permanent php upload

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum