php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack (1) Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Alt 21-09-2006, 08:42
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard Download via header attachment...

Hi Leute!

Hab ein problem mit nem downloadscript! Natürlich hab ich auch schon rumgesucht und bin dabei hierrauf gestoßen. Jedoch konnte mir dieser Threat leider auch nicht weiter helfen!

Mein aktuelles Script sieht so aus:
Link = download.php?file=../pics/galerie/Computer/mouselack/IMG_0358.JPG
PHP-Code:
<?php
$datei 
$_GET[file];
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$datei");
header("Content-Transfer-Encoding: binary");
readfile($datei);
?>
Problembeschreibung:
Der Download-Dialog erscheint wie geplant, ABER:
Alle Slashes werden durch Minus-Zeichen ersetzt! Bsp:
..-pics-galerie-Computer-mouselack-IMG_0358.JPG

urlencode &Co. waren irgendwie nutzlos!

Danke für eure Hilfe!
Mit Zitat antworten
  #2 (permalink)  
Alt 21-09-2006, 08:46
Trashar
 PHP Senior
Links : Onlinestatus : Trashar ist offline
Registriert seit: Dec 2001
Ort: /root/
Beiträge: 1.366
Trashar ist zur Zeit noch ein unbeschriebenes Blatt
Trashar eine Nachricht über ICQ schicken Trashar eine Nachricht über AIM schicken
Standard

das ist normal..

aber davon mal abgesehen.
Dir ist klar das du damit eine extrem große sicherheitslücke öffnest ja??

download.php?file=../../config.php oder so
und zack kann man sishc schön die daten runterladen die man bruahct..

da du es also anders lösen solltest braucht man auf deine anderes problem nicht weiter eingehen..
Mit Zitat antworten
  #3 (permalink)  
Alt 21-09-2006, 08:52
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Trashar
...da du es also anders lösen solltest braucht man auf deine anderes problem nicht weiter eingehen..
Hast du eventuell nen Lösungsansatz oder wenigstens ein "Stichwort" für mich parat!?
Mit Zitat antworten
  #4 (permalink)  
Alt 21-09-2006, 08:57
Trashar
 PHP Senior
Links : Onlinestatus : Trashar ist offline
Registriert seit: Dec 2001
Ort: /root/
Beiträge: 1.366
Trashar ist zur Zeit noch ein unbeschriebenes Blatt
Trashar eine Nachricht über ICQ schicken Trashar eine Nachricht über AIM schicken
Standard

header("Content-Disposition: attachment; filename=$datei");


und in $datei steht sowas wie ../../ordner/foobar/blub.jpg

Und der wandelt die / automatisch in - um
Da kannst dich quer stellen das wird sich nich ändern

so und nun änder dein download script..
Mit Zitat antworten
  #5 (permalink)  
Alt 21-09-2006, 08:59
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Sehr hilfreich und vor allem freundlich Trash!

Hat jemand nen besseren Lösungsansatz als mein problem zu zitieren?

Danke nochmals!
Mit Zitat antworten
  #6 (permalink)  
Alt 21-09-2006, 09:00
Trashar
 PHP Senior
Links : Onlinestatus : Trashar ist offline
Registriert seit: Dec 2001
Ort: /root/
Beiträge: 1.366
Trashar ist zur Zeit noch ein unbeschriebenes Blatt
Trashar eine Nachricht über ICQ schicken Trashar eine Nachricht über AIM schicken
Standard

Zitat:
Da kannst dich quer stellen das wird sich nich ändern
DA STEHT DAS ES NICHT ÄNDERBAR IST!

Was du machen könntest, $datei aufzusplitten..

Suche nach dem letzten / und den rest darein schreiben.. dann hast du nur den Dateinamen..
Mit Zitat antworten
  #7 (permalink)  
Alt 21-09-2006, 09:05
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Man Trash!?

Das es nicht änderbar ist ist kein Lösungsansatz!

Ich versuche nen download-link zu bauen und bin aufm Holzweg; Das hab ich schon eingesehn als ich mich entschieden hab das Problem hier zu posten!
Um ehrlich zu sein ich denke leute die ihre eigenen Foren coden haben sicher nen besseren Tipp als "...da kannst du dich quer legen...", oder?

Back to Topic: Das mit dem aufsplitten geht leider nicht, da der Pfad sich andauernd ändert! =(

Würde ne Verschlüsselung was bringen? MD5 oder so?

Geändert von nichtsooft (21-09-2006 um 09:10 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 21-09-2006, 09:21
Trashar
 PHP Senior
Links : Onlinestatus : Trashar ist offline
Registriert seit: Dec 2001
Ort: /root/
Beiträge: 1.366
Trashar ist zur Zeit noch ein unbeschriebenes Blatt
Trashar eine Nachricht über ICQ schicken Trashar eine Nachricht über AIM schicken
Standard

na und dann splitte pfad unabhängig auf.. suche nach dem letzten / (strrpos glaub ich war das) und gib den rest aus..
Da ist es scheiß egal wie der pfad ist..

Du willst einen lösungsansatz? Tja danns chau in den php code.. oder vielleicht gleich in den apachen code.. irgendwo muss ja so ein header teil drin sein, der die / in - ändert
da würd ich ansetzen..
Ist das nun ein Lösungsansatz?

Md5 ist keine verschlüsselung, es ist eine Hash Funktion
Mit Zitat antworten
  #9 (permalink)  
Alt 21-09-2006, 10:06
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von nichtsooft
Ich versuche nen download-link zu bauen und bin aufm Holzweg; Das hab ich schon eingesehn als ich mich entschieden hab das Problem hier zu posten!
Und du willst behaupten, dass alle anderen Threads hier zum Thema auch nur auf Holzwege führen?
Zitat:
Das mit dem aufsplitten geht leider nicht, da der Pfad sich andauernd ändert! =(
Aua.

Falls es dir noch nicht bekannt sein sollte: Man kann in PHP nicht nur mit Festwerten arbeiten, sondern auch mit so tollen Dingern, die sich "Variablen" nennen. Und deren Inhalt kann man auch bearbeiten, es gibt beispielsweise Stringfunktionen, etc.


Sorry für den Sarkasmus, aber du stellst dich extrem ... an.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #10 (permalink)  
Alt 21-09-2006, 16:42
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Ohhh? Es gibt tatsächlich Variablen in PHP?

Bin mir sicher die kann ich auch noch von Datei zu Datei zaubern, was!?

Ne; Mal wieder ernst...:
Ich code ne Galery in einfachster Form! Ein Verzeichnis wird gelesen und die darin enthaltenen Bilder als thumbs angezeigt. Diese Bilder sind nicht in ner DB erfasst, also kann ich nicht mit IDs (Bsp.: download.php?imgid=225568) arbeiten.
Ich muss irgendwie den ganzen Dateipfad, bzw. die Variable die den Dateipfad beschreibt an die "download.php" senden und dafür gibt's meines Erachtens nach nur 3 Wege. Cookie, POST und GET (wovon ich aber situationsbedingt nur letzeres verwenden kann).

Soweit richtig?
Mit Zitat antworten
  #11 (permalink)  
Alt 21-09-2006, 17:07
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von nichtsooft
Ich muss irgendwie den ganzen Dateipfad, bzw. die Variable die den Dateipfad beschreibt an die "download.php" senden und dafür gibt's meines Erachtens nach nur 3 Wege. Cookie, POST und GET (wovon ich aber situationsbedingt nur letzeres verwenden kann).
Ja.
Und?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 21-09-2006, 17:19
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

ok; weiter...

wenn ich eine, den Dateipfad beschreibende Variable per URL mitschicke, sieht das wiederum so aus:
download.php?datei=pics/galerie/bla/bla/blub.jpg

Das ist allerdings wie schon Trash gemeint hat extrem unsicher.
Jetzt könnte ich die Sache wie schon erwähnt aufsplitten, so dass die URL dann so aussieht:
download.php?sub1=bla&sub2=bla&file=blub.jpg*

Wobei ich aber hier nach wie vor ein Sicherheitsleck offen lasse.


*= (pics/galerie) bleibt konstant.
Mit Zitat antworten
  #13 (permalink)  
Alt 21-09-2006, 17:24
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von nichtsooft
wenn ich eine, den Dateipfad beschreibende Variable per URL mitschicke, sieht das wiederum so aus:
download.php?datei=pics/galerie/bla/bla/blub.jpg
Sowas machst du doch hoffentlich nicht - ohne die Daten URL-gerecht zu kodieren?
Zitat:
Wobei ich aber hier nach wie vor ein Sicherheitsleck offen lasse.
Überpüfe, ob der angegebene Pfad "erlaubt" ist.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #14 (permalink)  
Alt 21-09-2006, 17:34
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Na klar. die zweite Variante macht das ganze kein Stück sicherer, nur ein wenig unscheinbarer.

Aber du kennst das Problem. Nun überlege was getan werden muss, damit die Manipulation nicht stattfinden kann. Dabei geht es in erster Linie noch nichteinmal um konkreten PHP-Code, sondern erstmal nur um den Grundgedanken. Wenn du den verstanden hast, kannst du auch entsprechend vorgehen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #15 (permalink)  
Alt 21-09-2006, 17:37
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

1. zur Sicherheitslücke:

Und warum überprüfst Du nicht einfach vorher mal die GET-Variable, ob
der übergebene Pfad auch zulässig ist?

2. Dateiname:

Es kann doch nicht so schwer sein, aus einem Pfad den Dateinamen zu
lesen. In der Header-Zeile brauchst Du doch nur den, bzw. gehört da
kein Pfad rein. Was Du dort angibst, ist wie ein "Speichern unter..." -
Namensvorschlag für die Datei.
Mit Zitat antworten
Antwort

Lesezeichen


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/76059-download-via-header-attachment.html
Erstellt von For Type Datum
foren attachments dl ohne login - Google Search This thread Refback 07-09-2011 13:51

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:16 Uhr.