ดูเหมือนจะไม่มีใครทำงานกับสิ่งที่เป็นและนั่นก็แย่เกินไปดังนั้นนี่คือวิธีที่ฉันจัดการ ...
ประวัติ / ความเป็นมา
ฉันสร้างตัวอัปโหลด SVG ในปี 2558 ตามบทความ CSS-Tricks เพื่อดูว่าเกิดอะไรขึ้น ฉันยังมีกริดที่ทำงานเพื่อดูตัวอย่างรูปภาพและใช้การแก้ไขอื่น ๆ ปลั๊กอินอย่างง่าย (ปลั๊กอินชนิดไฟล์ IMO ควรเป็นแบบง่าย)
วิธีการแก้
มีการเปลี่ยนแปลงเล็กน้อยสำหรับ 4.7 PITA ที่แท้จริงคือสำหรับimage/
ประเภท mime WP กำลังใช้ GD บนภาพ เพื่อหลีกเลี่ยงสิ่งนี้ฉันได้ตั้งค่าsvg
ส่วนขยายให้ใช้application/svg+xml
ดังนั้น GD จะไม่ยุ่งกับไฟล์
อัปเดต:ณ 4.7.2 จุดประกายที่สว่างบางจุดก็ทำเช่นเดียวกันในบางกรณี
จากนั้นก็ผ่านเบ็ดเรา Hotwire image/svg+xml
มันกลับไป มันเป็นแบบเดียวกันกับที่ใช้ในคำตอบอื่น ๆ แต่ก่อนอื่นเราล็อกมันไว้กับเคสของเราเพื่อกำจัดเอฟเฟกต์ (มันเป็นไฟล์ SVG); เราสามารถพึ่งพาการอ่านได้$data['ext']
(ควรถูกกว่าฟังก์ชั่นเพื่อรับข้อมูลไฟล์เป็นการเปรียบเทียบเพียงครั้งเดียวและการเข้าถึงอาเรย์ / แฮชหนึ่งรายการ)
ปรับปรุง:ณ 4.7.2 $data['ext']
ไม่ได้ตั้งค่าเสมอดังนั้นเราตอนนี้ถ้ามันยาว <1 สารสกัด (อาจไม่ปลอดภัย)
strtolower(end(explode('.', $filename)))
ส่วนขยายจากชื่อไฟล์โดยใช้ เหตุผลที่ฉันต่อสู้โดยใช้ FileInfo คือการพึ่งพาส่วนขยาย PHP นั้นทึบเกินไปและไม่สามารถทำงานได้กับทุกคน (โดยเฉพาะอย่างยิ่งไม่ใช่การคอมไพล์ที่ไม่มีหรือไม่มีการเข้าถึงเพื่อเปิดใช้งานส่วนขยายหากไม่มี) ฉันต้องการบางสิ่งบางอย่างที่ทำงานแทนส่วนขยาย มันไม่ได้เป็นเรื่องของการมีข้อมูลที่ถูกต้องอีกต่อไปดังนั้นสำหรับผู้ที่เชื่อมั่นในผลลัพธ์FileInfo
และการมีส่วนขยาย (ฉันเชื่อว่ามันเป็นค่าเริ่มต้นใน 5.6+) มันควรจะทำงานได้ และเนื่องจากเป็นปลั๊กอินจึงไม่ได้แก้ไขคอร์ที่คุณสามารถปิดรหัสนี้หรือยกเลิกการลงทะเบียนฮุก
https://github.com/Lewiscowles1986/WordPressSVGPlugin
ดู
วิธีแก้ไขอื่น ๆ
การอนุญาตให้อัปโหลดที่ไม่มีการกรองเป็นวิธีการที่น่ากลัวเพราะอย่างที่คนอื่นบอกว่าการลิงก์ไปยังเธรดนี้ผู้คนสามารถอัปโหลดไฟล์ php ผ่านตัวอัปโหลดสื่อได้ (ไม่ดีและถ้าคุณทำได้คุณควรหยุดและคิด!)
บังคับให้ทุกไฟล์ผ่านฟังก์ชั่นใด ๆ โดยไม่มีการตรวจสอบ (แดกดันถ้าคุณมีimage/
ในประเภท mime คุณไม่สามารถตรวจสอบ ext อย่างง่ายได้) สิ่งนี้มีศักยภาพในการสร้างเอฟเฟกต์ที่เข้าถึงได้กว้างขึ้นเพื่อแก้ปัญหาเฉพาะกลุ่มและแนะนำการทำงานโดยรวมให้มากขึ้น (ข้อควรระวังปลั๊กอินของฉันยังแนะนำการทำงานมากขึ้นสำหรับผู้ใช้ที่เป็นผู้ดูแลระบบ
ถ้าเราปล่อย mime เป็น application / svg + xml และเพียงแค่กรอง mime ที่ภาพจะอัพโหลด แต่ AFAIK ต้องการการแก้ไขที่จะใช้เป็นรูปภาพเด่น ฯลฯ มีงานอีกมากที่ต้องทำเพื่อให้มั่นใจถึงประสบการณ์ SVG ที่เป็นสากลดังนั้นฉันจึงเลือก เพื่อเลือกการต่อสู้อย่างระมัดระวัง
หวังว่านี่จะช่วยได้
define( 'ALLOW_UNFILTERED_UPLOADS', true );
สิ่งนี้ไม่ปลอดภัยสำหรับการผลิตwp-config.php