Nginx zeigt keine Bildvorschau Tumpnails an

Apache, Lighttpd, nginx, Cherokee
User avatar
Proteus
Posts: 286
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Nginx zeigt keine Bildvorschau Tumpnails an

Post by Proteus » 2013-06-01 16:46

Hallo,

ich habe kürzlich meinen Server auf FreeBSD umgestellt, und wir wollen mit unserer Clanseite auf den neuen Server umziehen. Nun habe ich bemerkt, das in unserer Gallery des DZCP CMS keine Bilder bzw. keine Tumpnails angezeigt werden.

Wie man sieht, sieht man nur weiße Felder ==== http://db.faceblogger.de/gallery/?action=show&id=6 an.

Hier mal ein Auszug aus meiner conf.d

Code: Select all

server {
  listen localhost:80;
  server_name db.faceblogger.de;
  rewrite ^ http://db.faceblogger.de$request_uri?;
}
server {
  listen 80;
  server_name db.faceblogger.de;
  server_name_in_redirect off;
  root /var/www/vhost2/dust-fighter.de;

  proxy_cache_valid 200 302 1h;
  proxy_cache_valid 301 24h;
  proxy_cache_valid any 10m;

  location ~* \.(jpeg|jpg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|avi|mp3|mov|docx|pptx|xlsx|cfg|odt)$ {
    expires 864000;
  }
  location / {
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }
  location ~ \.php$ {
    fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
    fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
    limit_req zone=flood burst=15 nodelay;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
    proxy_cache staticfilecache;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/vhost2/dust-fighter.de$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_intercept_errors        on;
    fastcgi_ignore_client_abort     off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
  }
  location ~ /\.ht {
    deny all;
  }
}


Hier noch die nginx.conf:

Code: Select all

worker_processes 8;

events {
  worker_connections 2048;
}
http {
  geoip_country /opt/conf/GeoIP.dat;
  include /usr/local/etc/nginx/mime.types;
  default_type application/octet-stream;
  access_log off;
  server_tokens off;
  sendfile on;
  client_max_body_size 200m;
  client_body_buffer_size 1m;
  keepalive_timeout 4;
  port_in_redirect off;
  gzip on;
  gzip_http_version 1.1;
  gzip_vary on;
  gzip_comp_level 6;
  gzip_proxied any;
  gzip_types text/plain text/css application/json application/x-javascript application/xml application/xml+rss text/javascript;
  gzip_buffers 16 8k;
  gzip_disable "MSIE [1-6].(?!.*SV1)";
  limit_req_zone $binary_remote_addr zone=flood:10m rate=10r/s;
  proxy_cache_path /usr/local/etc/nginx/cache levels=1:2 keys_zone=staticfilecache:50m  max_size=300m;
  proxy_temp_path /usr/local/etc/nginx/proxy;
  proxy_cache_key "$scheme://$host$request_uri";
  proxy_cache_valid 200 60m;
  include /usr/local/etc/nginx/conf.d/*.conf;
}


Extensions.ini

Code: Select all

extension=ctype.so
extension=session.so
extension=filter.so
extension=mbstring.so
extension=json.so
extension=apc.so
extension=bz2.so
extension=gd.so
extension=mcrypt.so
extension=openssl.so
extension=pdf.so
extension=xml.so
extension=zip.so
extension=zlib.so
extension=mysqli.so
extension=exif.so
extension=mysql.so
extension=bcmath.so
extension=dom.so
extension=ftp.so
extension=hash.so
extension=iconv.so
extension=pdo.so
extension=pdo_sqlite.so
extension=phar.so
extension=posix.so
extension=simplexml.so
extension=sqlite3.so
extension=tokenizer.so
extension=xmlreader.so
extension=xmlwriter.so


Auszug aus Log:

Code: Select all

2013/06/02 12:50:36 [error] 70002#0: *145 FastCGI sent in stderr: "PHP message: PHP Warning:  imagejpeg(): Filename cannot be empty in /var/www/vhost2/dust-fighter.de/thumbgen.php on line 20" while reading response header from upstream, client: 108.162.229.37, server: db.faceblogger.de, request: "GET /thumbgen.php?img=gallery/images/6_140.jpg HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "db.faceblogger.de", referrer: "http://db.faceblogger.de/gallery/?action=show&id=6"



Vielleicht hat jemand eine Idee woran es liegen könnte?

Wäre dankbar für jeden Lösungsansatz.

MfG
Proteus
Last edited by Proteus on 2013-06-02 13:03, edited 2 times in total.
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

jan10001
Anbieter
Posts: 727
Joined: 2004-01-02 12:17

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by jan10001 » 2013-06-02 12:45

Ich würde dir raten dich an den Hersteller des CMS zu wenden, da kann man dir helfen. Zudem könnte ein Blick in die Logdateien nicht schaden, ich denke mal da werden einige Fehlermeldungen stehen.

User avatar
Proteus
Posts: 286
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by Proteus » 2013-06-02 13:06

jan10001 wrote:Ich würde dir raten dich an den Hersteller des CMS zu wenden, da kann man dir helfen. Zudem könnte ein Blick in die Logdateien nicht schaden, ich denke mal da werden einige Fehlermeldungen stehen.


Ich hatte vergessen die Log Datei mit zu posten ich habe sie nachgereichte, danke für den Hinweis.

MfG

Proteus
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

jan10001
Anbieter
Posts: 727
Joined: 2004-01-02 12:17

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by jan10001 » 2013-06-02 14:41

Ich kann dir nur nochmals raten dich an den Hersteller des CMS zu wenden, der Fehler liegt in der Software.

Code: Select all

PHP message: PHP Warning:  imagejpeg(): Filename cannot be empty in /var/www/vhost2/dust-fighter.de/thumbgen.php on line 20

Das sagt doch nun wirklich alles.
Last edited by jan10001 on 2013-06-02 14:42, edited 1 time in total.

User avatar
Proteus
Posts: 286
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by Proteus » 2013-06-16 03:37

Das Problem wurde übrigens gelöst, ein Scripter von DZCP hat uns helfen können.

Code: Select all

<?php
ob_start();
   define('basePath', dirname(__FILE__));

    if(!isset($_GET['img']) || empty($_GET['img']) || !extension_loaded('gd'))
        die('"gd" extension not loaded or "img" is empty');

    if(!file_exists(basePath.'/'.$_GET['img']))
        die('"'.basePath.'/'.$_GET['img'].'" file is not exists');

   $size   = getimagesize(basePath.'/'.$_GET['img']);
   $breite = $size[0];
   $hoehe  = $size[1];

   $neueBreite = empty($_GET['width']) ? 100 : intval($_GET['width']);
   $neueHoehe = intval($hoehe*$neueBreite/$breite);

   $neuesBild = imagecreatetruecolor($neueBreite,$neueHoehe);
   switch($size[2])
   {
      case 1: ## GIF ##
         header("Content-Type: image/gif");
         $altesBild = imagecreatefromgif(basePath.'/'.$_GET['img']);
         imagecopyresampled($neuesBild, $altesBild,0,0,0,0, $neueBreite, $neueHoehe, $breite, $hoehe);
         imagegif($neuesBild);
      break;
      default:
      case 2: ## JPEG ##
         header("Content-Type: image/jpeg");
         $altesBild = imagecreatefromjpeg(basePath.'/'.$_GET['img']);
         imagecopyresampled($neuesBild, $altesBild,0,0,0,0, $neueBreite, $neueHoehe, $breite, $hoehe);
         imagejpeg($neuesBild, null, 100);
      break;
      case 3: ## PNG ##
         header("Content-Type: image/png");
         $altesBild = imagecreatefrompng(basePath.'/'.$_GET['img']);
         imagecopyresampled($neuesBild, $altesBild,0,0,0,0, $neueBreite, $neueHoehe, $breite, $hoehe);
         imagepng($neuesBild);
      break;
    }
 
   if(is_resource($altesBild))
      imagedestroy($altesBild);

   if(is_resource($neuesBild))
      imagedestroy($neuesBild);
ob_end_flush();
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
Joe User
Project Manager
Project Manager
Posts: 11137
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by Joe User » 2013-06-21 13:13

Das Script eignet sich wunderbar zur Einschleusung von Code, wie zum Beispiel Remote-Shells.
Du solltest das Script offline nehmen, bis die Entwickler dieses und vermutlich etliche weitere Sicherheitslöcher gestopft haben.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
Proteus
Posts: 286
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by Proteus » 2013-06-21 14:32

Joe User wrote:Das Script eignet sich wunderbar zur Einschleusung von Code, wie zum Beispiel Remote-Shells.
Du solltest das Script offline nehmen, bis die Entwickler dieses und vermutlich etliche weitere Sicherheitslöcher gestopft haben.


Zur Kenntnis genommen und Script deaktiviert!

Danke für den Hinweis.

MfG

Proteus
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
Joe User
Project Manager
Project Manager
Posts: 11137
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by Joe User » 2013-06-21 15:20

In der geposteten Scriptdatei werden die $_GET (User-Input) in keiner Form auf Plausibilität oder gar Richtigkeit geprüft.
Das ist eigentlich ein absoluter Anfängerfehler, weshalb ich vermute, dass in dem Script noch weitere Sicherheitslücken schlummern.

Du solltest Dich nach einem anderen, sichereren Gallery-Script umschauen.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
Proteus
Posts: 286
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by Proteus » 2013-06-21 18:02

Joe User wrote:In der geposteten Scriptdatei werden die $_GET (User-Input) in keiner Form auf Plausibilität oder gar Richtigkeit geprüft.
Das ist eigentlich ein absoluter Anfängerfehler, weshalb ich vermute, dass in dem Script noch weitere Sicherheitslücken schlummern.

Du solltest Dich nach einem anderen, sichereren Gallery-Script umschauen.


Danke nochmals für den Hinweis, ich habe da ich kein PHP Coder bin einen Scripter in unserem Forum das Thumpnail Script umschreiben lassen.


Code: Select all

<!--?php
ob_start();
   define('basePath', dirname(realpath(__FILE__)));
   $denyExt = array("htaccess", "htpasswd", "php", "txt", "ini");

    if(!isset($_GET['img']) || empty($_GET['img']) || !extension_loaded('gd'))
        die('"gd" extension not loaded or "img" is empty');
      
    $imgPath = realpath(dirname(basePath.'/'.$_GET['img']));
   $imgFullPath = realpath(basePath.'/'.$_GET['img']);

    if(!file_exists($imgFullPath))
        die('"'.$imgFullPath.'" file is not exists');
      
   $pathinfo = pathinfo($imgFullPath);
   
   if(substr($imgPath, 0, strlen(basePath)) != basePath || in_array($pathinfo["extension"], $denyExt)){
      die("Nice try!");
   }
      

   $size   = getimagesize($imgFullPath);
   $breite = $size[0];
   $hoehe  = $size[1];

   $neueBreite = empty($_GET['width']) ? 100 : intval($_GET['width']);
   $neueHoehe = intval($hoehe*$neueBreite/$breite);

   $neuesBild = imagecreatetruecolor($neueBreite,$neueHoehe);
   switch($size[2])
   {
      case 1: ## GIF ##
         header("Content-Type: image/gif");
         $altesBild = imagecreatefromgif($imgFullPath);
         imagecopyresampled($neuesBild, $altesBild,0,0,0,0, $neueBreite, $neueHoehe, $breite, $hoehe);
         imagegif($neuesBild);
      break;
      default:
      case 2: ## JPEG ##
         header("Content-Type: image/jpeg");
         $altesBild = imagecreatefromjpeg($imgFullPath);
         imagecopyresampled($neuesBild, $altesBild,0,0,0,0, $neueBreite, $neueHoehe, $breite, $hoehe);
         imagejpeg($neuesBild, null, 100);
      break;
      case 3: ## PNG ##
         header("Content-Type: image/png");
         $altesBild = imagecreatefrompng($imgFullPath);
         imagecopyresampled($neuesBild, $altesBild,0,0,0,0, $neueBreite, $neueHoehe, $breite, $hoehe);
         imagepng($neuesBild);
      break;
    }
 
   if(is_resource($altesBild))
      imagedestroy($altesBild);

   if(is_resource($neuesBild))
      imagedestroy($neuesBild);
ob_end_flush();
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
Joe User
Project Manager
Project Manager
Posts: 11137
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Nginx zeigt keine Bildvorschau Tumpnails an

Post by Joe User » 2013-06-21 18:28

Wäre ein kleiner Anfang, aber Blacklists sind nie vollständig.

Besser wäre mit http://php.net/manual/en/ref.fileinfo.php nur Grifikdateien zuzulassen (Whitelist) und alles Andere abzulehnen.

Es müssen aber auch im restlichen Script grundsätzlich alle per $_GET, $_POST, $_COOKIE übergebenen Daten auf Plausibilität und Richtigkeit überprüft werden, bevor sie weiterverarbeitet werden.
In dem obigen File zum Beispiel auch ob $_GET['width'] wirklich eine positive Zahl ist und ob diese Zahl im gewünschten Rahmen liegt. Was passiert beispielsweise wenn ich -1280 oder 9876543210987654321 übergebe?
Das muss Alles in jedem einzelnen Scriptfile geprüft und gegebenenfalls geändert werden und wann immer möglich mit Whitelists statt Blacklists arbeiten (Alles per Default verbieten und nur zulässige Daten zulassen).
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.