Sepertinya tidak ada yang baru saja bekerja dengan apa yang ada dan itu sangat buruk jadi inilah cara saya menangani ...
Sejarah / Latar Belakang
Saya membuat pengunggah SVG pada tahun 2015 berdasarkan artikel Trik-CSS melihat apa itu. Saya juga dapat kisi-kisi untuk pratinjau gambar, dan menggunakan beberapa perbaikan lainnya. Plugin sederhana (plugin jenis file IMO harus sederhana)
Larutan
Ada beberapa perubahan untuk 4.7. PITA yang sebenarnya adalah bahwa untuk image/
jenis pantomim WP sekarang menggunakan GD pada gambar. Untuk memotong ini saya mengatur svg
ekstensi untuk digunakan application/svg+xml
sehingga GD tidak akan mengacaukan file.
Pembaruan: pada 4.7.2 beberapa percikan terang pecah juga dalam beberapa kasus
Kemudian nanti melalui kait kami hotwire kembali ke image/svg+xml
. Ini sama dengan yang digunakan pada jawaban lain, tetapi kami pertama-tama menguncinya ke kasus khusus kami untuk menghilangkan efek (apakah ini file SVG); kita bisa mengandalkan membaca $data['ext']
(harus lebih murah daripada fungsinya untuk mendapatkan info file karena hanya satu perbandingan dan satu akses array / hash).
Pembaruan: pada 4.7.2 $data['ext']
tidak selalu diatur, jadi kami sekarang jika panjangnya <1 mengekstrak ekstensi (berpotensi tidak aman) dari nama file yang digunakan
strtolower(end(explode('.', $filename)))
. Alasan saya benar-benar berjuang menggunakan FileInfo adalah bahwa pada dasarnya mengandalkan ekstensi PHP terlalu buram dan tidak akan selalu bekerja untuk semua orang (terutama yang tidak mengkompilasi tanpa atau tanpa akses untuk mengaktifkan ekstensi jika tidak ada di sana). Saya ingin sesuatu yang berfungsi sebagai pengganti ekstensi. Ini bukan lagi masalah memiliki informasi yang benar sehingga bagi mereka yang mempercayai hasil dari FileInfo
dan memiliki ekstensi (saya percaya itu default di 5.6+) itu harus berfungsi. Juga karena ini adalah plugin, itu bukan memodifikasi inti Anda dapat mematikan kode ini atau membatalkan registrasi kail.
https://github.com/Lewiscowles1986/WordPressSVGPlugin
Lihat
Penanganan lainnya
Mengizinkan pengunggahan tanpa filter adalah solusi yang mengerikan karena seperti yang dikatakan orang lain menghubungkan ke utas ini orang dapat mengunggah file php melalui pengunggah media (itu buruk dan jika Anda melakukannya, Anda harus berhenti dan berpikir!)
Memaksa setiap file melalui fungsi apa pun tanpa pemeriksaan (Ironisnya jika Anda memiliki image/
tipe mime, Anda tidak bisa hanya memiliki pemeriksaan ekst yang sederhana). Ini memiliki potensi untuk menciptakan efek jangkauan yang jauh lebih luas untuk memecahkan masalah yang relatif niche dan memperkenalkan lebih banyak pekerjaan secara keseluruhan (peringatan plugin saya juga memperkenalkan lebih banyak pekerjaan bagi pengguna admin untuk membuat media admin UI bekerja)
Jika kita meninggalkan mime sebagai aplikasi / svg + xml dan cukup memfilter jenis mime gambar akan diunggah tetapi AFAIK akan memerlukan perbaikan untuk digunakan sebagai gambar unggulan dll. Ada lebih banyak pekerjaan yang harus dilakukan untuk memastikan pengalaman universal SVG jadi saya memilih untuk memilih pertempuran dengan hati-hati.
Semoga ini membantu.
define( 'ALLOW_UNFILTERED_UPLOADS', true );
kewp-config.php
. Ini tidak aman untuk produksi.