HINWEIS: Traffic-Attakke !!!


Verbesserungsvorschläge, Mängel, Lob und Tadel alles hier rein.
Bei Loginproblemen wendet euch bitte mittels des Kontaktformulars auf der Homepage an uns.
Benutzeravatar
svbomber
SV-Rider
Beiträge: 16863
Registriert: 10.03.2003 14:59
Wohnort: Wolfsburg
Kontaktdaten:


#61

Beitrag von svbomber » 12.12.2004 18:50

Ja, ganz toll *nixversteg*

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


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

Benutzeravatar
Wörsty
SV-Rider
Beiträge: 5670
Registriert: 03.04.2003 22:08
Wohnort: 12589 Berlin
Kontaktdaten:

SVrider:

#62

Beitrag von Wörsty » 12.12.2004 18:52

Habe noch eine Korrektur des Codes von vorhin:

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())';
und

Code: Alles auswählen

$sql = 'SELECT sum(filesize) as traffic FROM traffic WHERE left(time,6) ="'.date("Ym").'"';
Damit man natürlich nur mit Daten vom aktuellen Monat rechnet :roll:

Die Tabelle:

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';

Murray


#63

Beitrag von Murray » 12.12.2004 19:00

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 Zeile

Code: Alles auswählen

readfile($file); 
und 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.

Benutzeravatar
Wörsty
SV-Rider
Beiträge: 5670
Registriert: 03.04.2003 22:08
Wohnort: 12589 Berlin
Kontaktdaten:

SVrider:

#64

Beitrag von Wörsty » 12.12.2004 19:02

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 Zeile

Code: Alles auswählen

readfile($file); 
und 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.
Genau. Und das ich in etwa den Traffic mitzähle und dann dicht mache.

Murray


#65

Beitrag von Murray » 12.12.2004 19:37

Ajo, sieht bei mir anders aus, arbeitet aber ähnlich ^^
Habe da auch relativ gründlich recherchiert und keine andere Methode gefunden, die Sache sicher zu machen - halt nur die, die ich noch genannt habe mit temporären FTP-Accounts, aber die kann man sich halt nicht mal schnell in PHP schreiben, da braucht man mehr.

Benutzeravatar
Wörsty
SV-Rider
Beiträge: 5670
Registriert: 03.04.2003 22:08
Wohnort: 12589 Berlin
Kontaktdaten:

SVrider:

#66

Beitrag von Wörsty » 12.12.2004 19:40

Murray hat geschrieben:...temporären FTP-Accounts, aber die kann man sich halt nicht mal schnell in PHP schreiben....
Jein. :arrow: http://www.proftpd.de/forum2/profile.ph ... rofile&u=4 :lol: 8)

Proftpd mit mod_sql regelt :wink:

ciao


#67

Beitrag von ciao » 13.12.2004 9:25

Tja, eine sehr umfangreiche Lösung die natürlich den Traffic überwacht. Die Frage ist ob die 'readfile' Funktion in der angewandten Form mit allen Browsern funktioniert?

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!
<?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";
}
?>
Ist ganz klar kein 100% Schutz, aber dafür recht einfach in Handhabung wenn das Firefox-Problem nicht wäre.

Hat irgendwer ne' Idee? :nocheck:

MfG Wfromp

Benutzeravatar
Wörsty
SV-Rider
Beiträge: 5670
Registriert: 03.04.2003 22:08
Wohnort: 12589 Berlin
Kontaktdaten:

SVrider:

#68

Beitrag von Wörsty » 13.12.2004 10:37

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!
Geht das auch nicht, wenn du die Headers mitsendest?

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)); 
Mußt du natürlich noch anpassen :wink:

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");
oder

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");

Benutzeravatar
svbomber
SV-Rider
Beiträge: 16863
Registriert: 10.03.2003 14:59
Wohnort: Wolfsburg
Kontaktdaten:


#69

Beitrag von svbomber » 28.12.2004 22:29

Abrechnung ist da :?

150,11 GB über Trafficfreivolumen = 73.56 EUR

Super.

Benutzeravatar
Wörsty
SV-Rider
Beiträge: 5670
Registriert: 03.04.2003 22:08
Wohnort: 12589 Berlin
Kontaktdaten:

SVrider:

#70

Beitrag von Wörsty » 28.12.2004 22:35

svbomber hat geschrieben:Abrechnung ist da :?

150,11 GB über Trafficfreivolumen = 73.56 EUR

Super.
:) scream
Geht den Menschen wie den Leuten

:) trost

Gelöschter Benutzer 431


#71

Beitrag von Gelöschter Benutzer 431 » 29.12.2004 7:37

Wörsty hat geschrieben:
svbomber hat geschrieben:Abrechnung ist da :?

150,11 GB über Trafficfreivolumen = 73.56 EUR

Super.
:) scream
Geht den Menschen wie den Leuten

:) trost
Armer Bombi :) trost

Benutzeravatar
Wörsty
SV-Rider
Beiträge: 5670
Registriert: 03.04.2003 22:08
Wohnort: 12589 Berlin
Kontaktdaten:

SVrider:

#72

Beitrag von Wörsty » 29.12.2004 10:40

MO hat geschrieben:Armer Bombi :) trost
Wer tröstet mich? :(
GMX Rechnung hat geschrieben:4.640,292 MByte = 55,68 Euro
Aber zur innerlichen Genugtuung habe ich GMX gekündigt :twisted:

Antworten