Portal > Foren > PHP > PHP-Programmierung > Verzeichnisanfrage verhinden
Thema geschlossen
 
Themen-Optionen Thema durchsuchen
Alt 07.01.2006, 18:18 Nach oben    #1
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard Verzeichnisanfrage verhinden

Moin
ich habe mir mal so ein ganz simples Beispiel einer Passwortabfrage gecodet:

Login.htm
HTML-Code:
<html>
<body>
<form action="auswetung.php" method="post">
Benutzername: <input type="text" name="name">
Passwort: <input type="password" name="password">
<input type="sumbit" value="OK">
</body>
</html> 
daten.php
PHP-Code:
<?php

$NAME 
"tester";
$PASSWORD "test";

?>
auswertung.php
PHP-Code:
<?php

$name 
$_POST['name'];
$password $_POST['password'];

include(
"daten.php");

if (
$name == $NAME   &&   $password == $PASSWORD)
{
setcookie("login""exist");
include(
"#inhalt.php");
}
else include(
"fehler.php");
?>
#inhalt.php
PHP-Code:
<?php

$login 
$_COOKIE['login'];

if (!isset(
$login))
{
die(
"Sie sind nicht eingeloggt. Zugriff verweigert.");
}

echo 
"blabla...." //Der Inhalt der geschützten Datei

?>
fehler.php
PHP-Code:
<?php

echo "Sie konnten nicht eingeloggt werden.";

?>

So, das Ganze ist ja jetzt mehr oder weniger durchdacht, und auf jeden Fall mal dagegen gesichert, dass die geschützte Datei einfach so aufgerufen werden soll.
Jetzt ist aber mein Problem: PHP-Dateien, die am Anfang des Namens ein #-Tragen, können ja nur includiert, aber nicht direkt eingesehen werden (Jedenfalls sagt das meint PHP-Buch). So, wenn ich mit dem Browser jetzt aber das Verzeichnis in dem die geschützte Datei liegt aufrufe, und dann (im FF) auf den Namen der geschützten Datei klicke, öffnet er sie anstandslos - unter dem Namen ...%23inhalt.php!

Jetzt wüsste ich gerne, was man tun kann... Man könnte doch z.B. das öffnen der Datei ganz unterbinden, oder einen Code schreiben, der das Anzeigen der Inhalte bei nichtincludieren in die richtige Datei blockiert, oder irgendwie verhindern, dass das Verzeichnis eingesehen werden kann.

Meine Testumgebung ist die neueste Xampp-Version.

Gruß
Bookworm

//edit:

P.S. Tippfehler im Code bitte ich zu entschuldigen. Ich habe das hier nur aus dem Kopf nachgecodet und nicht getestet. Original funktioniert bis auf das Angesprochene einwandfrei.
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 07.01.2006, 18:28 Nach oben    #2
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

Wie wärs, wenn du die zu schützenden Dateien in einen Ordner mit den Rechten 660 packst? Der Besitzer des Ordners muss natürlich der apache-user sein (das kannst du erreichen, indem du den ordner mit einem php-script erstellst)
Dann kannst du die Dateien zwar includieren, aber von außen nicht aufrufen...
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 07.01.2006, 18:34 Nach oben    #3
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Ahja...
Moment mal! muss ich dann alle Dateien includieren? Heißt das, ich muss für jede Datei nochmal eine anlegen, jeweils mit dem Inhalt include("blabla.php"); oder wie? Ist ja voll mistig...
Gruß BOokworm
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 07.01.2006, 19:06 Nach oben    #4
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

Ich versteh jetzt nich so ganz was du willst.
Einerseits machst du für eine einzelne Datei "#inhalt.php" eine Überpfüng von Login und andererseits willst du das nicht für alle Dateien machen?
Entscheid dich mal
Machs am besten anders:
Du testest für jede Datei, ob der besucher schon eingeloggt ist (für dein Beispiel reicht jetzt mal ein Cookie mit Namen "login" und dem Wert "true", oder irgendwas) und wenn das Cookie existiert, dann zeigst du die Datei an, und wenn nicht, dann zeigst du ein Login-Form an, das die Daten an auswertung.php weiterleitet.
Natürlich ist das ziemlich unsicher für den allgemeinen Gebrauch, denn es ist ziemlich leicht, ein solches Cookie anzuwenden.
Wenn du mein Beispiel verstanden und umgesetzt hast, dann kannst du deinen Login-Check noch mal verbessern; z.B. durch den Einsatz von Sessions, o.ä.
Grüße,
Jojo
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 07.01.2006, 21:41 Nach oben    #5
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.203
Standard

nur mal nebenbei, versuch mla bei der entwicklung deiner scripte

error_reporting(E_ALL);

immer gaaanz oben am anfang deiner scripte zu benutzen.

z.b.
PHP-Code:
error_reporting(E_ALL);
$login $_COOKIE['login'];

var_dump($login);

if (!isset(
$login))
{
    echo 
'drin';
}
else
{
    echo 
'ned drin';

und du wirst sehen, das ist nicht sauber gearbeitet, weil das immer true ist!

du überprüsst ob $login gesetzt ist, und das ist immer gesetzt weil du es oben setzt, ob es NULL oder sonstwas enthält ist dabei egal.

mfg
robo47
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 07.01.2006, 22:09 Nach oben    #6
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

@Bookworm
was robo dir sagen möchte ist eigentlich, dass du nciht davon ausgehen kannst, dass das $_COOKIE-Array überhaupt den Index "login" besitzt.
Du könntest das ganze dann so lösen:

PHP-Code:
error_reporting(E_ALL);
if (!isset(
$COOKIE['login']))
{
    echo 
'drin';
}
else
{
    echo 
'ned drin';

respektive könntest du auch mit
PHP-Code:
array_key_exists('login'$_COOKIE); 
arbeiten, aber liefert auch true, wenn der Index 'login' auf null verweist.
Grüße,
Jojo
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 09:21 Nach oben    #7
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.365
Standard

mal ne Frage, warum willst du überhaupt deinen php-files Namen geben, die scheinbar nur Probleme machen?

btw:
Ein sessionbasiertes Loginsystem
ggf. für dich interessant
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!

Geändert von Jann Hendrik (26.05.2007 um 12:16 Uhr)
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 10:27 Nach oben    #8
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Zitat:
mal ne Frage, warum willst du überhaupt deinen php-files Namen geben, die scheinbar nur Probleme machen?
Versteh ich nicht...

Ich könnte doch auch einfach die Login-Datei in "index.php" umbennen, dann wird die automatisch aufgerufen, wenn man nur das Verzeichnis ansteuert.

//edit:
Zitat:
ggf. für dich interessant
Ne, ist es nicht. Ich habe keinen blassen Schimmer von MySQL und die Hälfte der Kommandos im Code habe ich noch nie gesehen.
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 12:13 Nach oben    #9
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.365
Standard

Zitat:
Zitat von Bookworm
Jetzt ist aber mein Problem: PHP-Dateien, die am Anfang des Namens ein #-Tragen
ICH habe solche merkwürdigen Dateinamen nicht!
Daher die Frage, warum du dich für derartige Dateinamen entscheiden willst?

btw: das Tutorial mag auf den ersten Blick wirr und komplex erscheinen. Es ist aber allemal wert es durchzurarbeiten!
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 16:06 Nach oben    #10
Dejan Spasic
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
Standard

Zitat:
Zitat von Bookworm
Moin
Jetzt ist aber mein Problem: PHP-Dateien, die am Anfang des Namens ein #-Tragen, können ja nur includiert, aber nicht direkt eingesehen werden (Jedenfalls sagt das meint PHP-Buch). So, wenn ich mit dem Browser jetzt aber das Verzeichnis in dem die geschützte Datei liegt aufrufe, und dann (im FF) auf den Namen der geschützten Datei klicke, öffnet er sie anstandslos - unter dem Namen ...%23inhalt.php!

Jetzt wüsste ich gerne, was man tun kann... Man könnte doch z.B. das öffnen der Datei ganz unterbinden, oder einen Code schreiben, der das Anzeigen der Inhalte bei nichtincludieren in die richtige Datei blockiert, oder irgendwie verhindern, dass das Verzeichnis eingesehen werden kann.

Meine Testumgebung ist die neueste Xampp-Version.
Wenn ich dich richtig verstanden habe, kannst du bestimmte Dateien in der .htaccess Datei oder in der Direktive VirtualHost durch die FilesMatch-Direktive den Zugriff von außen schützen.
Code:
#Nicht getestet
<FilesMatch "\^#([^\.])+\.(php|inc)$">
    order deny,allow
    deny from all
</FilesMatch>
http://httpd.apache.org/docs/2.0/mod...tml#filesmatch
http://httpd.apache.org/docs/2.0/mod...ess.html#order

Eine abzusichernde Datei mit eine # als Prefix zu markieren, finde ich Persönlich ebenfalls unpassend. Vielleicht wären zwei Unterstriche, oder der Gleichen, besser geeignet.

Den Cookie auf seine existens abzufragen ist ebenfalls sehr unsicher, da jeder so ein Cookie selbst Lokal erstellen kann. Da man den Ihnalt des Cookies ebenfalls leicht Lokal manipulieren kann, würde ich daher empfehlen den Inhalt/Wert des Cookies, z.B. durch Blowfish-Algorithmus, zu Verschlüsseln/Entschlüsseln und diese dann abfragen bzw. auf den Client speichern.
http://de.php.net/manual/de/ref.mcrypt.php
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)

Geändert von dejan_spasic (08.01.2006 um 17:02 Uhr)
dejan_spasic ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:01 Nach oben    #11
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Leute?
Mein Buch, mit dem ich PHP lernen will, sagt, dass man Dateien, die man so schützen will, dass man sie nicht direkt aufrufen kann, nur mit einer Raute am Anfang speichern muss.
Deswegen habe ich eine Raute an den Anfang gesetzt, damit man sie nicht normal angucken kann. Steht im Buch... Ich dachte, was da steht, stimmt, deswegen...
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:06 Nach oben    #12
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

Schlechtes Buch
Was'n das für eins?
//edit: bzw. Setzt dein Autor eventuell ene bestimmte httpd.conf vorraus?
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:10 Nach oben    #13
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Das da:

http://www.amazon.de/exec/obidos/ASI...173780-0636536

Hatte 1a Rezensionen, stelle aber mittlerweile selber fest, das es nicht so toll ist: Man lernt im dritten Kapitel eine Umfrage zu erstellen, die sämtliche Daten noch in eine Textdatei schreibt, anstatt das man mal richtig MySQL lernen würde...
Das kann ich immer noch nedd, weil man Computer abstürzt, wenn ich versuche PHPmyAdmin aufzurufen... *man, ich würd das echt gerne mal lernen...*

LG Booki
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:17 Nach oben    #14
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

Das is schlecht, wenn dein PC abstürzt, wenn du PHPMyAdmin aufrufst.
Hast du dir deinen XAMPP selbst gebastelt?
Ich würd dich einfach mal in das Tutorial-Forum schicken.
Da lernste sowas...
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:20 Nach oben    #15
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Ich habe Xampp runtergeladen, auf CD gebrannt und installiert. So, jetzt rufe ich http://localhost/phpmyadmin auf, dann fängt der comp an u laden und läd und läd und macht sonst garnix mehr, bis firefox irgendwann von alleine abbricht...
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:22 Nach oben    #16
Dejan Spasic
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
Standard

Probier es erstmal mit der Seite http://tut.php-q.net/

http://forum.developers-guide.net/showthread.php?t=884
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:23 Nach oben    #17
Dejan Spasic
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
Standard

Leufen denn die Server Apache und MySQL
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 18:57 Nach oben    #18
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Die Seite oben kenne ich schon und ich komme mit ihr nedd klar... Außerdem habe ich an dem Computer an dem ich die Homepage entwickle keinen Internetzugang.

Ja, Apache läuft. MySQL weiß ich nicht, konnte ich nicht ausprobieren weil ich keinen Plan davon habe...
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 08.01.2006, 19:42 Nach oben    #19
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.512
Standard

Zitat:
Zitat von Bookworm
MySQL weiß ich nicht, konnte ich nicht ausprobieren weil ich keinen Plan davon habe...
Alter. Du musst einfach im XAMPP-Control-Panel den Button für MySQL anklicken. Der ist direkt unter dem Button für den Apache .. .. das hat nichts mit "kein Plan von MySQL" zu tun.

Grüße Ben.
Angehängte Grafiken
Dateityp: jpg xampp.jpg (44,8 KB, 10x aufgerufen)
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Alt 09.01.2006, 18:23 Nach oben    #20
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Na, also beim Starten von Xampp kommt doch des DOS-Fenster. Und da steht dann unter anderem drinnen:

Apache Server running....
MySQL running...
und so weiter

und wenn ichs beeende kommt

apache killed...
mysql killed...

ich denke mal es läuft schon....
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Thema geschlossen

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45