SetaPDF
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 15.05.2004, 12:35   #1
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Question

Wird lokale Datei included?


Servus!

Auf einer Homepage include ich die Dateien immer folgendermaßen: index.php?goto=home.php
Da ich gestern gelernt habe, dass das seeehr gefährlich ist, würde mich interessieren, wie ich prüfen kann, ob es sich bei dieser includeten Datei (in diesem Fall home.php) um eine lokale Datei handelt, d.h. ob sie auf meinem Server liegt und nicht auf einem fremden. Wie kann ich das machen?

Dankeschön im Voraus!
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten


Alt 15.05.2004, 12:46   #2
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
Man kann doch soviel ich weiss, gar keine externen Dateien includen oder?

Sonst könnte man evtl. abfragen, ob die Datei existiert, und dann über den Pfad auf den Server kommen..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein

loki ist offline   Mit Zitat antworten
Alt 15.05.2004, 12:55   #3
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von loki
Man kann doch soviel ich weiss, gar keine externen Dateien includen oder?
Tja, das habe ich auch gedacht, bis mir StuckMojo gezeigt hat, wie schnell er damit die besagte Seite hacken kann...

Gibts nicht irgendeinen Befehl, um dies zu prüfen (lokale Datei)?
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 15.05.2004, 13:09   #4
TP-Specialist
 
Benutzerbild von Schneeschaufel
 
Registriert seit: Mar 2002
Ort: Ö
Schneeschaufel hilft, wo's gehtSchneeschaufel hilft, wo's gehtSchneeschaufel hilft, wo's geht
Könnt ihr die Sache mit dem reinhacken etwas detailierter erläutern, bin grad hellhörig geworden .
Schneeschaufel ist offline   Mit Zitat antworten
Alt 15.05.2004, 13:24   #5
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Jan?
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 15.05.2004, 13:43   #6
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
Also, bei dir kann man natürlich leicht eigenen Code ausführen, aber nur dann, wenn ich http://meinedomain/falschedatei.txt inkludiere, evtl. kann ich beliebige Datei auf deinem Server inkludieren. Die Lösung wäre die Funktion basename(), die immer nur datei.endung ausgibt, egal was man davon schreibt. Allerdings besteht trotzdem das Problem/Gefahr, daß man eine beliebige Datei auf deinem Server inkludieren kann, also nicht nur home.php sondern vielleicht ../passwrd.inc.php... Daher empfehle ich einfach, daß du keine direkten Dateinamen an $_GET['goto'] übergibst, sondern Strings wie "home", die du später mit einem switch durchgehst, das wäre die sicherste Methode, denn falls jemand was Falsches eingibt, kannst du ihn per default an die richtige Seite leiten.
Mehr zum Thema Sicherheit gibt es hier.
Strogij ist offline   Mit Zitat antworten
Alt 15.05.2004, 13:46   #7
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
Misst, da ist mir wohl einer zuvorgekommen

Ich würds auch so machen, mit dem switch und dann keine dateinamen übergeben, sondern nur einen namen, mit dem dann durch den switchteil die richtige datei eingebunden wird..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein

loki ist offline   Mit Zitat antworten
Alt 15.05.2004, 13:54   #8
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
hm...
Aber ich übergebe ab und zu auch z.b. sowas:
index.php?goto=rangliste.php&sort=geld&anzahl=6, wobei sort=geld&anzahl=6 Parameter von rangliste.php gehört.
hm.. muss mir mal was überlegen...
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 15.05.2004, 13:58   #9
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
Die weiteren zu übergebenden Variablen gehen dir ja dadurch nicht verloren, auch wenn du in ner Abfrage das goto änderst..

Du machst ja keine Weiterleitung..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein

loki ist offline   Mit Zitat antworten
Alt 15.05.2004, 13:58   #10
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
Ja, dann kannst du z.B. ein switch reinbauen, und nur Eingaben erlauben, die du haben willst:
PHP-Code:
switch ($_GET['goto'])
{
case 
"home.php":
$inkl $_GET['goto'];
break;
case 
"gb.php":
$inkl $_GET['goto'];
break;
default:
$inkl "home.php";
break;
}
include(
$inkl); 

Geändert von Strogij (15.05.2004 um 14:06 Uhr).
Strogij ist offline   Mit Zitat antworten
Alt 15.05.2004, 14:03   #11
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Da braucht doch ein Hacker nur seine "Angriffsdatei" so nennen...?
Reicht es nicht aus, einfach zu prüfen, ob die Datei ($goto) auf dem eigenem Server liegt?
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 15.05.2004, 14:07   #12
seb
TP-Veteran
 
Registriert seit: Jan 2002
seb bringt sich richtig einseb bringt sich richtig ein
Ich find diese Switch-Konstruktionen zum Includen von Dateien ausgesprochen unelegant.
Erstens haben sie haben den Nachteil, dass man den Code für jede weitere zu includende Datei um einen neuen case erweitern muss, und zweitens wirken sie einfach anfängerhaft.
Warum, ist nicht ganz leicht zu erklären, ausserdem natürlich subjektiv und zuletzt für den Seitenbesucher von aussen sowieso nicht zu sehen, aber ich leg für mich selbst einfach Wert auf möglichst guten Code.

Ich würde statt des Switches den über $_GET hereingeholten Dateinamen darauf überprüfen, ob es sich um eine "erlaubte" Datei handelt, und sie anschließend einfach per include($_GET['einzubindendedatei'] einbinden.

Und die Überprüfung kann in wenigen Zeilen und absolut sicher erledigt werden. Dateien von fremden Servern kann man z.B. schon allein dadurch von vornherein aussperren, indem man keine Dateinamen bzw. Adressen erlaubt, die mit 'http://' beginnen und/oder Slashes enthalten.

Und wenn du alle zu includenden Dateien in ein eigenes Verzeichnis legst, den Pfad dorthin fest in den Include-Befehl schreibst und für den $_GET-Parameter nur 'einfache' Textzeichen und den Punkt erlaubst, können auch keine unerwünschten Dateien vom eigenen Webspace mehr eingebunden werden.
seb ist offline   Mit Zitat antworten
Alt 15.05.2004, 14:45   #13
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Sehr gut. Danke für den Tipp, seb! Ihr anderen natürlich auch Danke!
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 15.05.2004, 18:35   #14
seb
TP-Veteran
 
Registriert seit: Jan 2002
seb bringt sich richtig einseb bringt sich richtig ein
Der Vollständigkeit halber:

Wenn man (warum auch immer) die Namen der erlaubten Dateien dennoch unbedingt ausdrücklich im Code festlegen möchte, kann man mit folgendem Code exakt das selbe wie mit dem häufig vorgeschlagenen switch bewirken:


$erlaubte_dateien = array('datei1', 'datei2', 'datei3', 'guestbook');
if (in_array($_GET['goto'], $erlaubte_dateien)) include($_GET['goto']);


Immernoch wesentlich kürzer als das switch.
Ich würd allerdings trotzdem die Variante mit dem seperaten Ordner für die include-Dateien + Dateinamenkontrolle vorziehen, da man damit wie gesagt neue Dateien einfach hinzukopieren kann, ohne am Sicherheitscheck etwas ändern zu müssen.

Geändert von seb (15.05.2004 um 18:37 Uhr).
seb ist offline   Mit Zitat antworten
Alt 15.05.2004, 19:02   #15
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von seb
Immernoch wesentlich kürzer als das switch.
Ich würd allerdings trotzdem die Variante mit dem seperaten Ordner für die include-Dateien + Dateinamenkontrolle vorziehen, da man damit wie gesagt neue Dateien einfach hinzukopieren kann, ohne am Sicherheitscheck etwas ändern zu müssen.
So habe ich das Problem auch gelöst. Danke!
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Wird lokale Datei included? Wird lokale Datei included?
« navi per php einbinden? | MySQL-Einträge nach bestimmter Spalte auslesen »

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

Erweiterte Suche
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
Datei einlesen und nach String durchsuchen Flow09 Traum-Dynamik 9 20.03.2003 11:17
Generierung einer txt datei Newbee Traum-Dynamik 5 17.02.2003 01:54
prn datei - druck aus datei boris_d Druckstudio 1 17.07.2002 12:31
Variable wird nicht gesetzt Dreamflower Traum-Dynamik 6 04.03.2002 18:45
Meta-Angaben in seperate Datei?! JanBreier Dreamweaver 3 29.03.2001 12:02


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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