[PHP] Header content-disposition

Pagina: 1
Acties:

Onderwerpen


  • Skibby
  • Registratie: April 2000
  • Laatst online: 23-10 10:57
Als ik met:

---------------------------------

header("Content-type: application/octet-stream");

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

readfile($filename);

----------------------------------

Een word file .doc laat downloaden in netscape 7, dan gaat dat goed, maar dan staat het bestand als .doc.php op mijn schijf...

iemand een idee waardoor dit komt?

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Ik meen in een ander topic gelezen te hebben dat dit een browser-specefieke fout is...

  • Skibby
  • Registratie: April 2000
  • Laatst online: 23-10 10:57
ah...
er bestaat een oplossing, zet een / na je php file
dus zoiets:

getfile.php/?file=$filename

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

PHP:
1
2
3
4
5
6
7
8
9
10
11
$filename = $_SERVER['QUERY_STRING'];

// Internet explorer zuigt nogal met het geforceerd downloaden van een bestand.
$contentType='application/octet-stream';
header("Pragma: "); // IE fix.
header("Cache-Control: "); // IE fix
header("Content-type: $contentType");
header("Content-Disposition: attachment; filename=\"".$filename."\""); // IE fix
header("Content-length:".(string)(filesize('c:/phpdev/www/wallpapers/'.$filename))); // IE fix.
$filepump=fopen($filename, "rb"); 
fpassthru($filepump);


Een stukje uit de download.php van m'n thumbnail scriptje

Aanroepen als: Download.php?filename.ext

Stop uploading passwords to Github!


Verwijderd

Skibby schreef op 13 April 2003 @ 21:54:
ah...
er bestaat een oplossing, zet een / na je php file
dus zoiets:

getfile.php/?file=$filename
jap dit klopt :)

overigens, lekker veilig(not).

PHP:
1
readfile($filename);

in b.v. http://www.domain.nl staat dan de bovenstaande file.
ook in de http://www.domain.nl staat een config.php met inhoud als b.v.
PHP:
1
2
3
4
$db_host = "localhost";
$db_user = "blaat";
$db_pass = "1234";
$db_dbname = "eenschaapindewei";

normaal is het iets als download.php/?filename=downloads/file.exe maar nou maakt een hacker/scriptkiddy er van download.php/?filename=config.php en daar gaat je config, passwords weg, en waarschijnlijk je site dood.

Verwijderd

hoe kan je dat dan wel beveiligen zodat hij nooit de config file kan downloaden?

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 09-10 13:15
PHP:
1
basedir($filename) ;


Dit zorgt ervoor dat alleen de bestandsnaam in de string gezet wordt en daardoor kun je nooit ../bestand.php of directory/bestand.php aanroepen, nadeel is wel dat een directory structuur maken moeilijker is

Icons are overrated


Verwijderd

Alle bestanden die wel gedownload mogen worden in een database zetten, en die string dan controleren met de database...is een mogelijkeheid :)
Pagina: 1