Ich machs jetzt so: http://www.svbomber.de/forum/downloads.php

Ja, alles nicht 100% save, aber besser als vorher

Code: Alles auswählen
$sql = 'INSERT INTO traffic values ("",'.intval($_REQUEST["nav_id"]).',"'.$_SERVER["REMOTE_ADDR"].'", "'.$_SERVER["HTTP_USER_AGENT"].'", "'.$_SERVER["REQUEST_URI"].'", '.filesize($file).', "'.$file.'", now())';
Code: Alles auswählen
$sql = 'SELECT sum(filesize) as traffic FROM traffic WHERE left(time,6) ="'.date("Ym").'"';
Code: Alles auswählen
CREATE TABLE `traffic` (
`traffic_id` int(8) unsigned NOT NULL auto_increment,
`nav_id` tinyint(3) unsigned default '0',
`remote_addr` varchar(16) default '000.000.000.000',
`http_user_agent` varchar(255) default NULL,
`request_uri` varchar(255) default NULL,
`filesize` int(8) default NULL,
`file` varchar(255) NOT NULL default '',
`time` timestamp(14) NOT NULL,
PRIMARY KEY (`traffic_id`),
UNIQUE KEY `traffic_id` (`traffic_id`),
KEY `traffic_id_2` (`traffic_id`)
) TYPE=MyISAM COMMENT='Zählt den Traffic';
Code: Alles auswählen
readfile($file);
Genau. Und das ich in etwa den Traffic mitzähle und dann dicht mache.Murray hat geschrieben:Naja , nicht 100% sicher heißt eigentlich nur: "nicht sicher"
Da muss man ja gegebenenfalls kein großer Hacker sein, um die URL, die man nach Prüfung bekommt einfach auf die eigene Page zu übernehmen. Also die Normale Limitierung bringt meines Erachtens gar nichts.
Was Wörstys Ansatz besonders macht, ist im Grunde nur die Zeileund die Headerinfos dadrüber natürlich. Denn hier wird sozusagen eine einzigartige Datei erzeugt, die man downloaden kann und die identisch zu der ist, die man haben will. An das Original kommt man aber nicht ran.Code: Alles auswählen
readfile($file);
Jein.Murray hat geschrieben:...temporären FTP-Accounts, aber die kann man sich halt nicht mal schnell in PHP schreiben....
Ist ganz klar kein 100% Schutz, aber dafür recht einfach in Handhabung wenn das Firefox-Problem nicht wäre.<?php
// Eigene Domain (ohne "www." oder dergleichen)
$selfdomain = "eigenedomain.de";
// Verzeichnis der Bilder (kein Slash am Ende!)
// Relativ zum Verzeichnis dieses PHP-Skriptes
$imgdir = "bilder";
// Zusätzlich erlaubte Domain
$allowdomain = "guweb.com";
$selfdomain = strtoupper($selfdomain);
$allowdomain = strtoupper($allowdomain);
$ref = strtoupper($HTTP_REFERER);
// protokoll entfernen
$ref = str_replace("HTTP://", "", $ref);
// domain extrahieren
if (strpos($ref, "/")) $ref = substr($ref, 0, strpos($ref, "/"));
if (($ref=="") || (strpos($ref, $allowdomain)) || (strpos($ref, $selfdomain))) {
$fn = $PATH_INFO;
if ((strpos($fn, "../")) || (strpos($fn, "..\\")))
{
echo "Zugriffsverletzung"; // Server schützen
} else readfile($imgdir.$fn); // Datei ausgeben
} else {
echo "Kein Zugriff";
}
?>
Geht das auch nicht, wenn du die Headers mitsendest?Wfromp hat geschrieben:In folgendem kleinen Script von 'guweb.com', daß eigentlich nur den Referer scheckt und das 'Downloadverzeichniss' unsichtbar macht, habe den Firefox nicht überzeugen können die Datei anzuzeigen!
Code: Alles auswählen
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename=' . basename($filename));
Code: Alles auswählen
header('Content-Disposition: attachment; filename=blabla.jpg');
header('Content-type: image/jpeg');
header("Expires: ".date("D, d M Y 23:59:59")." GMT");
Code: Alles auswählen
header('Content-Disposition: attachment; filename=no_banner.gif');
header('Content-Length: 42');
header('Content-type: image/gif');
header("Expires: ".date("D, d M Y 23:59:59")." GMT");