Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Mit WordPress 2.8.5 wird die Whitelist der erlaubten Mime-Typen für Downloads erstmalig auch für Administratoren gültig. Dies ist ein Schritt in Richtung Sicherheit und wird im Artikel von Robert hinreichend erklärt.
Robert zeigt auch, dass man mit Hilfe einer Konstanten die Möglichkeit alle Datentypen zu uploaden eröffnen kann.
define ('ALLOW_UNFILTERED_UPLOADS', true);
Wer aber im Vorfeld schon diverse Projekte mit WordPress umgesetzt hat und das Problem hatte, dass User nicht über die Rechte zum Upload eines bestimmten Formates besaßen, der musste sich auch da was einfallen lassen.
In vielen Fällen wurde dazu via Plugin Role Manager der Upload aller Mime Typen erlaubt. Aus meiner Sicht nicht der richtige Weg und daher im folgenden ein kleiner Code-Schnipsel, der das Anpassen an die jeweilige Anforderung übernimmt.

Alle erlaubten Typen findet man in der Whitelist-Funktion wp_check_filetype(), in wp-includes/functions.php.
Diese Funktion besitzt einen Filter upload_mimes, den man erweitern kann. Und dort setzen wir an und geben die Mime Typen mit, die wir benötigen. Im folgenden Beispiel erlaube ich dabei php-, xhtml- und htaccess-Files. Die Möglichkeiten werden in einem Array übergeben und die Zuordnung ist wichtig, damit WordPress auch ein Icon zuordnen kann, siehe Screenshot.
function my_upload_mimes() {
$mime_types = array(
'php|phps' => 'text/php',
'xhtm|xhtml' => 'text/html',
'htaccess' => 'text/plain'
);
return $mime_types;
}
add_filter( 'upload_mimes', 'my_upload_mimes' );
Um eine Übersicht aller Mime-Typen zu erhalten, kann gern die folgenden Liste genutzt werden. Die Übergabe an WordPress sollte aber nur die enthalten, die man auch explizit braucht, ansonsten kann die obige Konstante genutzt geben.
$mime_types = array(
'323' => 'text/h323',
'acx' => 'application/internet-property-stream',
'ai' => 'application/postscript',
'aif' => 'audio/x-aiff',
'aifc' => 'audio/x-aiff',
'aiff' => 'audio/x-aiff',
'asf' => 'video/x-ms-asf',
'asr' => 'video/x-ms-asf',
'asx' => 'video/x-ms-asf',
'au' => 'audio/basic',
'avi' => 'video/x-msvideo',
'axs' => 'application/olescript',
'bas' => 'text/plain',
'bcpio' => 'application/x-bcpio',
'bin' => 'application/octet-stream',
'bmp' => 'image/bmp',
'c' => 'text/plain',
'cat' => 'application/vnd.ms-pkiseccat',
'cdf' => 'application/x-cdf',
'cer' => 'application/x-x509-ca-cert',
'class' => 'application/octet-stream',
'clp' => 'application/x-msclip',
'cmx' => 'image/x-cmx',
'cod' => 'image/cis-cod',
'cpio' => 'application/x-cpio',
'crd' => 'application/x-mscardfile',
'crl' => 'application/pkix-crl',
'crt' => 'application/x-x509-ca-cert',
'csh' => 'application/x-csh',
'css' => 'text/css',
'dcr' => 'application/x-director',
'der' => 'application/x-x509-ca-cert',
'dir' => 'application/x-director',
'dll' => 'application/x-msdownload',
'dms' => 'application/octet-stream',
'doc' => 'application/msword',
'dot' => 'application/msword',
'dvi' => 'application/x-dvi',
'dxr' => 'application/x-director',
'eps' => 'application/postscript',
'etx' => 'text/x-setext',
'evy' => 'application/envoy',
'exe' => 'application/octet-stream',
'fif' => 'application/fractals',
'flr' => 'x-world/x-vrml',
'gif' => 'image/gif',
'gtar' => 'application/x-gtar',
'gz' => 'application/x-gzip',
'h' => 'text/plain',
'hdf' => 'application/x-hdf',
'hlp' => 'application/winhlp',
'hqx' => 'application/mac-binhex40',
'hta' => 'application/hta',
'htc' => 'text/x-component',
'htm' => 'text/html',
'html' => 'text/html',
'htt' => 'text/webviewhtml',
'ico' => 'image/x-icon',
'ief' => 'image/ief',
'iii' => 'application/x-iphone',
'ins' => 'application/x-internet-signup',
'isp' => 'application/x-internet-signup',
'jfif' => 'image/pipeg',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'js' => 'application/x-javascript',
'latex' => 'application/x-latex',
'lha' => 'application/octet-stream',
'lsf' => 'video/x-la-asf',
'lsx' => 'video/x-la-asf',
'lzh' => 'application/octet-stream',
'm13' => 'application/x-msmediaview',
'm14' => 'application/x-msmediaview',
'm3u' => 'audio/x-mpegurl',
'man' => 'application/x-troff-man',
'mdb' => 'application/x-msaccess',
'me' => 'application/x-troff-me',
'mht' => 'message/rfc822',
'mhtml' => 'message/rfc822',
'mid' => 'audio/mid',
'mny' => 'application/x-msmoney',
'mov' => 'video/quicktime',
'movie' => 'video/x-sgi-movie',
'mp2' => 'video/mpeg',
'mp3' => 'audio/mpeg',
'mpa' => 'video/mpeg',
'mpe' => 'video/mpeg',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'mpp' => 'application/vnd.ms-project',
'mpv2' => 'video/mpeg',
'ms' => 'application/x-troff-ms',
'mvb' => 'application/x-msmediaview',
'nws' => 'message/rfc822',
'oda' => 'application/oda',
'p10' => 'application/pkcs10',
'p12' => 'application/x-pkcs12',
'p7b' => 'application/x-pkcs7-certificates',
'p7c' => 'application/x-pkcs7-mime',
'p7m' => 'application/x-pkcs7-mime',
'p7r' => 'application/x-pkcs7-certreqresp',
'p7s' => 'application/x-pkcs7-signature',
'pbm' => 'image/x-portable-bitmap',
'pdf' => 'application/pdf',
'pfx' => 'application/x-pkcs12',
'pgm' => 'image/x-portable-graymap',
'pko' => 'application/ynd.ms-pkipko',
'pma' => 'application/x-perfmon',
'pmc' => 'application/x-perfmon',
'pml' => 'application/x-perfmon',
'pmr' => 'application/x-perfmon',
'pmw' => 'application/x-perfmon',
'pnm' => 'image/x-portable-anymap',
'pot' => 'application/vnd.ms-powerpoint',
'ppm' => 'image/x-portable-pixmap',
'pps' => 'application/vnd.ms-powerpoint',
'ppt' => 'application/vnd.ms-powerpoint',
'prf' => 'application/pics-rules',
'ps' => 'application/postscript',
'pub' => 'application/x-mspublisher',
'qt' => 'video/quicktime',
'ra' => 'audio/x-pn-realaudio',
'ram' => 'audio/x-pn-realaudio',
'ras' => 'image/x-cmu-raster',
'rgb' => 'image/x-rgb',
'rmi' => 'audio/mid',
'roff' => 'application/x-troff',
'rtf' => 'application/rtf',
'rtx' => 'text/richtext',
'scd' => 'application/x-msschedule',
'sct' => 'text/scriptlet',
'setpay' => 'application/set-payment-initiation',
'setreg' => 'application/set-registration-initiation',
'sh' => 'application/x-sh',
'shar' => 'application/x-shar',
'sit' => 'application/x-stuffit',
'snd' => 'audio/basic',
'spc' => 'application/x-pkcs7-certificates',
'spl' => 'application/futuresplash',
'src' => 'application/x-wais-source',
'sst' => 'application/vnd.ms-pkicertstore',
'stl' => 'application/vnd.ms-pkistl',
'stm' => 'text/html',
'svg' => 'image/svg+xml',
'sv4cpio' => 'application/x-sv4cpio',
'sv4crc' => 'application/x-sv4crc',
't' => 'application/x-troff',
'tar' => 'application/x-tar',
'tcl' => 'application/x-tcl',
'tex' => 'application/x-tex',
'texi' => 'application/x-texinfo',
'texinfo' => 'application/x-texinfo',
'tgz' => 'application/x-compressed',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'tr' => 'application/x-troff',
'trm' => 'application/x-msterminal',
'tsv' => 'text/tab-separated-values',
'txt' => 'text/plain',
'uls' => 'text/iuls',
'ustar' => 'application/x-ustar',
'vcf' => 'text/x-vcard',
'vrml' => 'x-world/x-vrml',
'wav' => 'audio/x-wav',
'wcm' => 'application/vnd.ms-works',
'wdb' => 'application/vnd.ms-works',
'wks' => 'application/vnd.ms-works',
'wmf' => 'application/x-msmetafile',
'wps' => 'application/vnd.ms-works',
'wri' => 'application/x-mswrite',
'wrl' => 'x-world/x-vrml',
'wrz' => 'x-world/x-vrml',
'xaf' => 'x-world/x-vrml',
'xbm' => 'image/x-xbitmap',
'xla' => 'application/vnd.ms-excel',
'xlc' => 'application/vnd.ms-excel',
'xlm' => 'application/vnd.ms-excel',
'xls' => 'application/vnd.ms-excel',
'xlt' => 'application/vnd.ms-excel',
'xlw' => 'application/vnd.ms-excel',
'xof' => 'x-world/x-vrml',
'xpm' => 'image/x-xpixmap',
'xwd' => 'image/x-xwindowdump',
'z' => 'application/x-compress',
'zip' => 'application/zip'
);
händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 971 Beiträge, 19448 Kommentare in 14 Kategorien und 459 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
2. September 2009 um 11:40
Erstmal danke für den Beitrag, das hilft fortgeschrittenen Nutzern mit Sicherheit eine ganze Menge. Meiner Meinung nach gehört diese Liste aber ins Backend und nicht in irgendeine functions.php oder in ein eigenes Plugin.
Mich nervt es einfach an der wp-config.php rumzuschraubenm oder ein eigenes Plugin für jedes Blog zu schreiben, weil die Entwickler des Cores eine neue Konstante eingeführt haben um ein total sinnbefreites Feature (Revisions, Mülleimer) deaktivieren zu können. Sowas müsste meiner Meinung nach alles über das Admin-Panel abschaltbar sein.
2. September 2009 um 14:41
Wann soll eigentlich die version kommen?
4. September 2009 um 10:14
Danke für den Beitrag. Ich sehe das aber wie gr4y. Soetwas gehört auf jedenfall ins Backend und hat an anderer Stelle einfach nichts verloren. Es funktioniert zwar so, aber es wirkt ein wenig quick & dirty
14. Februar 2010 um 14:32
Hallo zusammen,
erstmal möchte ich auch Danke für die wirklich guten Tipps und Tricks in diesem Blog sagen. Und auch bei diesem Artikel habe ich wieder eine Lösung für ein auftrehtendes Problem gefunden.
Denn gerne würde ich in meinem Blog Daiteien uploaden können, die mit GPS, Geodaten, Routendaten usw. zu tun haben. Das betrifft die gpx, kmz und kml Dateien. Bei deiner Liste habe ich die entsprechenden Dateiendungen hinzugefügt und jene heraus genommen, die ich nicht brauche.
Nun habe ich die functions.php im wp-includes geöffnet und über die Suchfunktion meines Editors habe ich auch die Stelle mit dem wp_check_filetype gefunden. Ist es richtig, dass der Abschnitt function my_upload_mimes noch nicht in der Datei vorhanden ist? Sehe ich es auch richtig, dass das eine eigene "Erweiterung" ist und ich sie am Ende der functions.php hinzufügen kann? (Sprich per copy and paste deine Code Zeilen übernehmen kann?)
Denn in der Zeile 2275 der functions.php habe ich get_allowed_mime_types gefunden. Müsste man nicht diese Liste einfach ergänzen? Würde mich sehr freuen, wenn man mir weiterhelfen kann, da ich meinem Blog schon gerne zu den von mir benötigten Dateien verhelfen würde.
Schon einmal vielen Dank und ein schönen Sonntag Nachmittag
Muckel
15. Februar 2010 um 10:33
@Muckel: nein; niemals die Core-Dateien, die Originale von WordPress, anfassen - der Code gehört in die functions.php des Themes oder in ein eigenes Plugin ausgelagert.
15. Februar 2010 um 11:09
Guten Morgen,
vielen Dank für die schnelle Antwort. Glaube ich sollte an den Tagen wo es mir gesundheitlich nicht gut geht, die Finger vom Programmieren lassen. Vielen Dank
1. März 2010 um 12:17
Hallo zusammen,
habe da doch nochmal 'ne kleine Frage: und zwar möchte ich diese Variante nutzen, damit man Dateien mit GPS-Daten / Routeninformationen hochladen kann. Das betrifft also *.gpx und *.kml Dateien. Doch was sollte man als "Programm" für jene angeben?
Vielen Dank
Muckel
1. März 2010 um 18:06
@Muckel: Kann ich nicht sagen, ich kenne den Typ dazu nicht eventuell weis den jemanden von den GPS Freaks, irgendein Forum vielleicht.