php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.09.2010, 23:29  
Neuer Benutzer
 
Registriert seit: 28.09.2010
Beiträge: 4
PHP-Kenntnisse:
Anfänger
xadmin befindet sich auf einem aufstrebenden Ast
Standard Verzeichnisschutz mit PHP

Hallo, dies ist mein erster Beitrag hier.

Ich arbeite der Zeit an einem Projekt in welchem ich mich via Login Form und MySQL DB an einer Website anmelde. Das einloggen an sich funktionier soweit.
Leider bin ich dabei auf einige Probleme gestoßen, zu welchen ich euch nun befragen möchte.

1. Nach dem Login möchte ich, dass der Benutzer auf eine andere *.php Seite weitergeleitet wird. Dies funktioniert leider nicht mit der header(); Funktion, da durch den MySQL Query der Header schon belegt ist. Ich habe das also mit meta http refresh gelöst. Geht das auch anders?
Das ist leider auch nicht das Wahre, da das Zielverzeichnis derzeit noch HTACCESS geschützt ist. (sensible Daten).

Wo ich schon bei der nächsten Fragen wäre:
2. Wie kann ich ein Verzeichnis und die dort enthaltenen Dateien (z.B. *.pdf *.doc *.zip) vor dem Direktzugriff schützen? Also ohne HTACCESS und nur mit PHP.

Nun ja für den Moment reicht es mit den Problemen.
Hoffe ihr könnt mir Helfen.

grüße
x


edit:
Hier nochmal mein PHP Code fals er erforderlich ist.
PHP-Code:
<?php
if (isset($_POST['Submit']) && $_POST['Submit'] == 'Login'
    {
    if (isset(
$_POST['pass'])) 
        {
        }
    
$db_host localhost;
    
$db_username benutzer;
    
$db_password "passwort";
    
$db_name datenbank;
    
mysql_connect($db_host$db_username$db_password);
    
mysql_select_db($db_name);
    
$sql "SELECT pw FROM passwords WHERE username LIKE '".$_POST['username']."'"
    
$result mysql_query($sql) or die(mysql_error());
    
$md5password mysql_fetch_assoc($result);
    if(
$md5password[pw]==md5($_POST['password'])) 
        {
        echo 
"passwort richtig";
        
#header("Location: ../admin/");
        
echo "<meta http-equiv=refresh content=\"0; url=../admin/\">";
        }
        else 
            {
            echo 
"falsches passwort";
            } 
    }
?>

Geändert von xadmin (28.09.2010 um 23:35 Uhr).
xadmin ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.09.2010, 23:53  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo,

lege deine geschuetzten Dateien in einem Verzeichnis ab, das ueber http nicht erreichbar ist (also unterhalb des DOCUMENT ROOT). Mit PHP kannst du trotzdem jederzeit auf die Dateien zugreifen (da es nicht ueber http auf die Dateien zugreift, sondern direkt ueber die Festplatte sozusagen). Hier kannst du dann vorher deine is-logged-in-Pruefung einbauen.

Wie du einen Download anbietest, findest du im PHP-Handbuch unter der Funktion header().
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 29.09.2010, 00:07  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von xadmin Beitrag anzeigen
da durch den MySQL Query der Header schon belegt ist.
What the f...? Achso, jetzt hab ich verstanden was du meinst . Naja, ist doch kein Wunder, wenn vor dem header() ein echo-Befehl steht.
Trainmaster ist gerade online  
Alt 29.09.2010, 11:34  
Neuer Benutzer
 
Registriert seit: 28.09.2010
Beiträge: 4
PHP-Kenntnisse:
Anfänger
xadmin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Hallo,

lege deine geschuetzten Dateien in einem Verzeichnis ab, das ueber http nicht erreichbar ist (also unterhalb des DOCUMENT ROOT)..
Cool, danke für den Tipp.
Werd das mal so ausprobieren...

Zitat:
Zitat von Trainmaster
Naja, ist doch kein Wunder, wenn vor dem header() ein echo-Befehl steht.
Ah danke. Daran liegt es also
xadmin ist offline  
Alt 30.09.2010, 15:21  
Neuer Benutzer
 
Registriert seit: 28.09.2010
Beiträge: 11
PHP-Kenntnisse:
Anfänger
mindphuk befindet sich auf einem aufstrebenden Ast
Standard

Was ist schlimm an einer htaccess mit einem Inhalt wie
Code:
Order deny,allow
Deny from all
Dann sollte nur der lokale Zugriff über file möglich sein.
mindphuk ist offline  
Alt 30.09.2010, 15:55  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Eben.

.htaccess in das Verzeichnis mit "deny from all".

Dann kommt von außen keiner mehr dran. Da PHP aber auf dem Server liegt, kann PHP nahc wie vor auf diese Dateien zugreifen. Oberhalb des geschützten Verzeichnisses legst du eine PHP Datei ab über welche du dann Sicherheitsprüfungen durchführen kannst bevor php z.B. mit readfile() die gewünschte Datei ausliest und an den Browser sendet.

Zitat:
Ah danke. Daran liegt es also
PHP wirft da so eine schöne Fehlermeldung: Warning: Cannot modify header information, headers already send. (output started at ... in ...) in ......

Nicht zu wissen was da passiert zeugt von einem grundlegendem Verständnissfehler bei der Funktionsweiße des HTTP Protokolls.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline  
Alt 30.09.2010, 15:55  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Schlimm ist daran nix, IMHO ist das sogar mit die sauberste Lösung.
Die Anforderung war allerdings:
Zitat:
2. Wie kann ich ein Verzeichnis und die dort enthaltenen Dateien (z.B. *.pdf *.doc *.zip) vor dem Direktzugriff schützen? Also ohne HTACCESS und nur mit PHP.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 30.09.2010, 16:04  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Schlimm ist daran nix, IMHO ist das sogar mit die sauberste Lösung.
Die Anforderung war allerdings:
Da hast du schon recht. Aber da er es mit htaccess schützen kann (da es ja momentan so ist) sollte er das meiner Meinung nach auch beibehalten.

Ggf. weiss er auch nicht das PHP trotz htaccess drauf zugreifen kann wenn er schon davon spricht das ein <meta refreash... wegen dem .htaccess Schutz nicht das wahre ist? Geschweige denn das es keinen HTTP Direktzugriff zum Download benötigt sondern PHP die Daten an den Anwender übermitteln kann.

Ansonsten, falls er umzieht auf einen Server wo der .htaccess Schutz nicht möglich ist, wäre Chriz Lösung sinnvoll sofern dort kein open_basedir gesetzt ist...
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline  
Alt 30.09.2010, 17:03  
Erfahrener Benutzer
 
Benutzerbild von drsoong
 
Registriert seit: 05.08.2008
Beiträge: 1.127
drsoong wird schon bald berühmt werden
Standard

Zitat:
Ansonsten, falls er umzieht auf einen Server wo der .htaccess Schutz nicht möglich ist, wäre Chriz Lösung sinnvoll sofern dort kein open_basedir gesetzt ist...
Sollte open_basedir nicht immer gesetzt werden?
drsoong ist offline  
Alt 30.09.2010, 17:08  
Neuer Benutzer
 
Registriert seit: 28.09.2010
Beiträge: 11
PHP-Kenntnisse:
Anfänger
mindphuk befindet sich auf einem aufstrebenden Ast
Standard

Genau darum habe ich gefragt, was daran schlimm ist. Sprich, warum nicht benutzen?
mindphuk ist offline  
 


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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php verzeichnisschutz, php verzeichnisschutz ohne htaccess, verzeichnisschutz php, verzeichnis schützen ohne htaccess, verzeichnisschutz mit php, ordner per php schützen, php verzeichnis schützen, php verzeichnis schützen ohne htaccess, php verzeichnis schutz, html verzeichnis schützen ohne htaccess, verzeichnisschutz via php, php ordner schützen, htaccess verzeichnisschutz benutzername header, verzeichnisschutz ohne htaccess, verzeichnisschutz mit php ohne htaccess, php zip vor zugriff schützen, php auf daten zugreifen header, geschützter download ordner php, htaccess verzeichnisschutz download, php download verzeichnis schützen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:16 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