• Gelöst dragoncrawl

    (@dragoncrawl)


    Ich habe bemerkt, dass ich weder Grafikdateien im JPG-Format mehr im Mediacenter von WordPress hochladen kann. Nun hochgeladen wird die Datei an sich zwar, aber im Mediacenter erscheint beim Thumbnail nur die Fehlergrafik. Auch kann ich die hochgeladene JPG-Datei nicht direkt im Browser aufrufen, da es immer zu einer 403-Meldung über mangelnde Zugriffsrechte führt, z.B.

    127.0.0.1/xyz-wp/wp-content/uploads/karotte.jpg

    „Forbidden

    You don’t have permission to access /wp-content/uploads/karotte.jpg on this server.“

    Dieser Fehler tritt sowohl bei meiner Liveseite als auch unter meiner Entwicklungsseite unter XAMPP auf.

    In XAMPP existiert nur die minimal .htaccess Datei mit dem Inhalt

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /xyz-wp/
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /xyz-wp/index.php [L]
    </IfModule>
    # END WordPress

    Die PHP Version ist 5.6. Alle Rechte (Lesen, Schreiben, Ausführen) sind gesetzt. Ich habe alle Plugins deaktiviert und das Standard Twenty Sixteen Theme aktiviert.

    Das Seltsame ist, dass PNG-Grafikdateien korrekt funktionieren, sowohl im Mediacenter als auch beim direkten Aufrufen des Links der Datei, z.B.

    127.0.0.1/xyz-wp/wp-content/uploads/karotte.png

    Ich habe hier schon gelesen, dass mit der Version 4.5.2 einige Fehler beim Bilderupload zu beobachten sind. Kann jemand meine Probleme mit JPG-Dateien und die Problemlosigkeit bei PNG-Dateien reproduzieren?

    Gruß dragoncrawl

Ansicht von 15 Antworten – 1 bis 15 (von insgesamt 15)
  • Amid

    (@aminteractiondesign)

    Welche Rechte haben dein uploads Ordner und die JPGs?
    Hast du mal noch höhere Rechte probiert?

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Um den Fehler einzugrenzen, benenne doch mal die aktuelle .htaccess in htaccess (ohne den Punkt) um und speichere dann unter Einstellungen > Permalinks die gewünschte Linkstruktur nochmal ab. Klappt es dann?

    Thread-Starter dragoncrawl

    (@dragoncrawl)

    @andreas Münch

    Bei der Liveseite habe ich alle Rechte auf 777 gesetzt und bei XAMPP halt Lesen, Schreiben, Ausführen für alle Benutzer angegeben, obwohl ja nur Leserechte ausreichen sollten.

    @bego Mario Garde

    Habe die .htaccess in htaccess umbenannt und die Permalinkeinstellungen neu abgespeichert, aber es bleibt dabei, dass JPG-Dateien eine 403 Fehlermeldung hervorrufen und im Mediacenter nicht angezeigt werden, während PNG-Dateien problemlos funktionieren.

    Ich warte mal die 4.5.3 ab.

    Dieser User hier hatte genau das umgekehrte Problem.
    Lösung waren Korrekturen in der PHP.ini.
    Wäre also vielleicht einen Versuch wert, auch mal in diese Richtung zu ermitteln.
    Falls du selbst keinen Zugriff hast, kannst du ja mal bei deinem Webhoster diesbezüglich anfragen.

    @dragoncrawl
    Vergiss bitte meinen obigen Beitrag, da war ich nicht aufmerksam genug. Denn erstens hatte ich beim Verfassen meines Beitrags gar nicht bedacht, dass das Problem ja sowohl bei der Livesite als auch bei der XAMPP-Installation besteht und du auf XAMPP sowieso Zugriff auf die PHP.ini-Datei hast, und zweitens ist es zumindest insofern nicht *genau* umgekehrt wie im verlinkten Fall, als du einen 403er (Zugriffsrechte) kriegst und dort ein 404er kam. Da hab ich zu schnell aus der Hüfte geschossen. 😉

    Thread-Starter dragoncrawl

    (@dragoncrawl)

    @flower33

    Danke für deinen Tipp, auch wenn er letztlich nicht passte.

    Da ich mir die Changelog der 4.5.2 angeschaut und gesehen habe, dass dort explizit eine Sicherheitslücke im Upload geschlossen wurde

    „WordPress 4.5.1 sowie vorherige Versionen sind von einigen Schwachstellen durch die Third-Party-Bibliothek Plupload betroffen, die WordPress nutzt, um Dateien hochzuladen. WordPress 4.2 bis 4.5.1 haben eine XSS-Sicherheitslücke, die durch spezielle, von der Third-Party-Bibliothek MediaElement.js erstellten URIs hervorgebracht wird. MediaElement.js und Plupload haben ebenfalls Sicherheits-Updates veröffentlicht, die diese Lücken schließen.“

    WordPress 4.5.2 Sicherheits-Release

    wird dieser Fehler höchstwahrscheinlich durch den Fix verursacht worden sein. Daher warte ich jetzt einfach mal die Version 4.5.3 ab. Dringend ist das Problem für mich jetzt nicht, da PNG-Dateien ja zum Glück ganz normal funktionieren.

    Amid

    (@aminteractiondesign)

    Weiß nicht, ob das daher kommt, millionen andere Sites haben ja auch 4.5.2 und können trotzdem JPGs hochladen. Leider hab ich gerade auch keine Idee mehr, woran das sonst noch liegen könnte.

    Edit: Hast du mal alle Plugins deaktiviert und getestet ob es dann geht?

    Moderator PraetorIM

    (@praetorim)

    Kann es vielleicht sein, dass bei Hin- und Herladen zwischen der lokalen und der Server-Installation die Berechtigungen oder die User durcheinander gekommen sind. Insbesondere die User-Einstellungen könnten in der XAMPP-Version abweichen.

    Thread-Starter dragoncrawl

    (@dragoncrawl)

    @andreas Münch

    Ja, habe testweise alle Plugins deinstalliert gehabt. Hat leider keine Änderung ergeben.

    @praetorim

    Da kannst du recht haben, dass das Hin- und Herladen etwas an den Berechtigungen durcheinandergebracht hat. Aber bei der Livesite habe ich per FTP Programm (Filezilla) sicher alle Rechte beim Upload Ordner und allen Unterordnern auf 777 gesetzt. Mehr geht ja nicht.

    Der Fehler mit den JPG-Dateien besteht auch nur im Uploadordner. Wenn ich JPG-Dateien woanders in der WordPressinstallation hochlade, werden diese per html-Einbindung im Quellcode von Seiten, Beiträgen und Widgets angezeigt und ich kann auch direkt auf diese verlinken. Nur der Uploadordner akzeptiert nur PNG (PDF beispielsweise auch nicht, hier das gleiche Phänomen wie bei JPG).

    Ich warte die 4.5.3 ab und wenn es keine Änderung geben sollte, dann werde ich versuchen testweise eine Xamppinstanz mit Downgrade zu machen.

    Danke an alle, die versucht haben das Problem zu lösen!

    @dragoncrawl

    Das ist wirklich ein spannender Fall – ich fänds interessant, wenn du ihn noch nicht zu den Akten legen würdest. 😉

    wird dieser Fehler höchstwahrscheinlich durch den Fix verursacht worden sein. Daher warte ich jetzt einfach mal die Version 4.5.3 ab.

    Wie Andreas schon sagte: Millionen anderer User nutzen WP 4.5.2 und laden ohne Probleme JPGs hoch…
    Da würds mich an deiner Stelle aber doch in den Fingern jucken, mal die Probe aufs Exempel zu machen und auf XAMPP in htdocs einen Ordner WP2 anzulegen, eine neue Datenbank einzurichten, WP 4.5.2 zu installieren und dann bei dieser jungfräulichen Installation mal deine JPGs hochzuladen.
    Tipp: Hier, aber auch bei den bestehenden Installationen würde ich aber außer deinen aktuellen JPGs auch mal ein extra hierfür erstelltes JPG der Größe 1×1 px verwenden. Besteht in allen Fällen weiterhin dasselbe Problem?

    Mal noch ein paar andere Überlegungen, die die unterschiedliche Behandlung von JPGs und PNGs erklären könnten, was diesen Fall ja eigentlich noch viel spannender macht als diejenigen, in denen gar keine Bilder mehr hochgeladen werden können:

    (1)
    Unterscheiden sich vielleicht alle aktuellen JPGs bei dir grundsätzlich von den PNGs hinsichtlich
    – im Namen enthaltener Großbuchstaben/Sonderzeichen/Umlaute etc.
    – Länge des Namens
    – schwarz/weiß, Graustufen?
    – Größe in px (hohe px-Werte?)
    – Größe in Bytes (wie groß sind die größten?)

    (2)
    Hast du eventuell an irgendeiner Stelle einen Hotlinking-Schutz aktiviert, der zwar z.B. JPGs, JPEGs oder GIFs betrifft, PNGs aber ausnimmt?
    Sieht z.B. die .htaccess deiner Live-Site anders aus als die o.g. WP-Minimal-Version? Wenn es in der Live-Version zum Beispiel etwas in der folgenden Art gäbe (Primitivbeispiel):

    RewriteCond %{HTTP_REFERER} .
    RewriteCond %{HTTP_REFERER} !^http://www\.deinesite\.de [NC]
    RewriteRule \.(jpe?g|gif)$ - [F]

    dann wäre das eine Maßnahme gegen Hotlinking von Bildern im Format jpg, jpeg und gif, würde aber keine png-Grafiken betreffen.

    Ein solcher Hotlinking-Schutz könnte u.U. auch (ohne dein Wissen?) im Kundenmenü des Webhosters aktiviert sein, wäre also nicht unbedingt aus der .htaccess zu ersehen. Das könntest du also auch mal noch nachprüfen.

    (3)
    In dem gerade genannten Kontext eventuell noch relevant: Hast du vielleicht in deinem Browser bzw. per Plugin den HTTP-Referrer deaktiviert?

    Vielleicht hast ja auch du noch Lust bzw. Interesse, den Grund für dieses seltsame Phänomen herauszufinden. 😉

    Hat sonst noch jemand Ideen, wie sich diese unterschiedliche Behandlung von PNGs gegenüber den anderen Formaten erklären ließe?

    Thread-Starter dragoncrawl

    (@dragoncrawl)

    @flower33

    Danke für deinen Einsatz 🙂

    Hier mal meine Livesite .htaccess

    # BEGIN WordPress
    
    ########## Mod Rewrite
    #
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    #
    ##########
    
    ########## nur http://www.xyz.de Variante um Duplicate Content zu vermeiden
    #
    RewriteCond %{HTTP_HOST} !^www\.xyz\.de$
    RewriteRule ^(.*)$ http://www.xyz.de/$1 [L,R=301]
    #
    ##########
    
    ##########
    #
    <Files wp-login.php>
    AuthType Basic
    AuthName "Admin-Bereich"
    AuthUserFile /www/htdocs/xyz/.htpasswd
    Require valid-user
    </Files>
    #
    ##########
    
    ##########
    #
    <Files xmlrpc.php>
    AuthType Basic
    AuthName "Admin-Bereich Android"
    AuthUserFile /www/htdocs/xyz/.htpasswd
    Require valid-user
    </Files>
    #
    ##########
    
    ######### XML-RPC Schnittstelle abschalten
    #
    <IfModule mod_setenvif.c>
      <Files xmlrpc.php>
        BrowserMatch "wp-android" allowed
        Order Deny,Allow
        Deny from All
        Allow from env=allowed
      </Files>
    </IfModule>
    #
    ##########
    
    ########## Prevent Directory Listings
    #
    Options -Indexes
    #
    ##########
    
    ########## Error-Log auf xyz.de aktivieren
    #
    #php_flag log_errors on
    #php_value error_log "/www/htdocs/xyz/logs/error/php_errors.log"
    #
    ##########
    
    ########## Zugriff von außen auf wichtige Dateien im Rootverzeichnis verbieten (Error-Log bei Aktivierung hinzufügen)
    #
    <FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html|license\.txt)">
      Order deny,allow
      Deny from all
    </FilesMatch>
    #
    ##########
    
    ########## Bild Hotlinking unterbinden
    #
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?xyz.de [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?xyz.de [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]
    #
    ##########
    
    ########## Include Only Dateien blocken.
    #
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^wp-admin/includes/ - [F,L]
    RewriteRule !^wp-includes/ - [S=3]
    RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
    RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
    RewriteRule ^wp-includes/theme-compat/ - [F,L]
    </IfModule>
    #
    #########
    
    ########## PHP-Fehlermeldungen unterdrücken
    #
    php_flag display_errors Off
    #
    ##########
    
    ########## Keine URL based Exploits zulassen
    #
    RedirectMatch 403 \[
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    #
    ##########
    
    ########## Double Slashes in allen URLs verbieten
    #
    RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(([^/\ ]+/)*)/+([^\ ]*)
    RewriteRule ^ /%1%3 [L,R=301]
    </IfModule>
    #
    ##########
    
    ########## Magic Quotes ausschalten
    #
    php_flag magic_quotes_gpc Off
    #
    ##########
    
    # END WordPress

    Es ist ein Hotlinkingschutz aktiviert, aber dieser gilt sowohl für JPG als auch für PNG. In der XAMPP .htaccess ist dieser Abschnitt aber nicht enthalten, sondern nur das standardmäßige

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    Daran kann es eigentlich nicht liegen („eigentlich“, weil ich keine Ahnung habe woran es liegt). Die PNG’s und JPG’s unterscheiden sich nicht relevant. Ich habe es mit an sich gleichen Bildern probiert, die unter 100 KB groß sind und im Dateinamen keine Sonderzeichen, etc.. enthalten.

    Ich werde deinen Rat befolgen und mal eine jungfräuliche WordPressinstallation unter XAMPP aufsetzen und schauen was dann passiert.

    Ich werde berichten.

    @dragoncrawl

    Danke für deine Rückmeldung 🙂
    Es wäre ja auch zu schön gewesen, wenn bei deinem tatsächlich vorhandenen Hotlinking-Schutz aus irgendwelchen Gründen die PNGs ausgelassen oder übersehen worden wären. 😉

    Ich nehme an, das error.log liefert auch keine Anhaltspunkte…

    Wenn es wenigstens bei *allen* Dateien so wäre, hätte man ja noch weitere Verdächtige in der Hinterhand gehabt (mod security, file permissions, file ownership etc.), aber so… bleibts weiterhin rätselhaft. 🙂
    Mal gespannt, was deine Tests mit einer Plain-Vanilla-Version ergeben werden.

    Schönes Wochenende!

    Hi dragencrawl.

    Hatte ein ähnliches Problem kürzlich bein einem meiner Kunden, ließ sich eigentlich binnen kürzester Zeit fixen. Allerdings gibts dabei so viele mögliche Variablen, dass das hier einfach den Rahmen sprengt. Wenn Du magst, kannst Du mir gern mal die Zugangsdaten zum System geben (ja, ich weiß, das ist eine potentielle Sicherheitslücke, aber..) und ich schau mal rein. Kostet Dich auch nichts 😉

    Du kannst ja gerne vorher ein Backup mit „Duplicator“ ziehen und nach dem Fixing gerne den Zugang wieder löschen. Ich will ehrlich sein: ich SCHLAGE mich nicht drum, das Problem zu lösen. Aber es könnte hier X Beiträge kosten, das Problem zu fixen, während ich das am Live-System binnen 10mins fixen könnte 😉 Und nein, das ist explizit KEIN Versprechen, DASS ich das hinkriege!

    Am Rande:
    „Bei der Liveseite habe ich alle Rechte auf 777 gesetzt..“
    Das ist so ungefähr die besch*ssenste Idee, die man auf einer Live-Site überhaupt nur haben kann. Damit steht ein (potentieller) Hack eigentlich direkt vor der Haustür..

    Thread-Starter dragoncrawl

    (@dragoncrawl)

    @ all

    Das Rätsel ist gelüftet und das Problem sitzt vor dem Rechner. Ich Honk habe nicht mehr gewusst, dass ich aus Sicherheitsgründen eine zusätzliche .htaccess im Uploadordner hatte mit folgendem Inhalt.

    Order deny,allow
     Deny from all
     <Files ~ ".(xml|css|jpeg|png|gif|js|php)$">
     Allow from all
     </Files>

    Sorry und gleichzeitig Danke an alle, die sich an der Lösungsfindung beteiligt haben.

    jpeg sind erlaubt, jpg nicht. Habe nun jpg hinzugefügt und alles ist fantastisch 😀

    @ Thomas A. Reinert

    Vielen Dank für dein Angebot, was ich angenommen hätte, wenn ich nicht selber das Problem ausfindig gemacht hätte.

    Die FTP Rechteeinstellung 777 habe ich natürlich nur temporär getätigt, um direkt zu schauen, ob der Upload dann funktioniert. Danach habe ich natürlich die Rechte wieder auf 755 zurückgesetzt.

    @dragoncrawl
    Das nennt man dann „Trick 17 mit Selbstüberlistung“ 😉
    Danke schön, dass du das spannende Rätsel hier aufgelöst hast!

Ansicht von 15 Antworten – 1 bis 15 (von insgesamt 15)
  • Das Thema „Nur noch PNG-Grafiken uploadbar – Bei JPG Fehlermeldung 403 keine Zugriffsrechte“ ist für neue Antworten geschlossen.