Cum să Permiți Încărcarea Fișierelor Personalizate în WordPress în Siguranță

Flo

30

⏲️ Estimated reading time: 4 min

Cum să Permiți Încărcarea Fișierelor Personalizate în WordPress în Siguranță. WordPress restricționează implicit anumite tipuri de fișiere pentru a preveni riscuri de securitate. Totuși, dacă ai nevoie să încarci fișiere precum SVG, JSON, WebP, ZIP, APK, PSD, trebuie să faci câteva ajustări în site-ul tău. În acest articol, îți voi arăta cum să permiți aceste fișiere și, în același timp, să menții securitatea site-ului tău.


1. De ce să Permitem Mai Multe Tipuri de Fișiere?

WordPress blochează unele tipuri de fișiere din motive de securitate. Însă, în funcție de nevoile tale, ai putea dori să încarci:

  • SVG – Fișiere grafice scalabile
  • JSON – Fișiere pentru setări și date
  • WebP – Format de imagine optimizat
  • ZIP & RAR – Arhive de fișiere
  • APK – Pachete pentru aplicații Android
  • PSD – Fișiere Adobe Photoshop

Prin modificarea setărilor, putem permite aceste formate, dar trebuie să aplicăm măsuri de protecție pentru a preveni atacurile XSS și alte vulnerabilități.


2. Cum Adăugăm Suport pentru Mai Multe Tipuri de Fișiere?

Codul PHP pentru activarea extensiilor personalizate

Adaugă următorul cod în fișierul functions.php al temei tale pentru a permite încărcarea mai multor tipuri de fișiere:

function custom_mime_types( $mimes ) {
    // Adăugăm extensii noi
    $mimes['aac']  = 'audio/aac'; 
    $mimes['ogv']  = 'audio/ogg'; 
    $mimes['svg']  = 'image/svg+xml'; 
    $mimes['webp'] = 'image/webp';  
    $mimes['json'] = 'application/json'; 
    $mimes['svgz'] = 'image/svg+xml'; 
    $mimes['rar']  = 'application/vnd.rar'; 
    $mimes['zip']  = 'application/zip'; 
    $mimes['woff'] = 'font/woff'; 
    $mimes['gif']  = 'image/gif'; 
    $mimes['apk']  = 'application/vnd.android.package-archive'; 
    $mimes['psd']  = 'image/vnd.adobe.photoshop'; 
    $mimes['wmv']  = 'video/x-ms-wmv'; 

    // Eliminăm fișierele periculoase
    unset($mimes['exe']); 

    return $mimes;
}
add_filter( 'upload_mimes', 'custom_mime_types', 1, 1 );

Acest cod permite încărcarea mai multor tipuri de fișiere și elimină fișierele executabile .exe, care pot reprezenta un risc major de securitate.


3. Protejarea Fișierelor SVG și JSON

Fișierele SVG pot conține cod JavaScript malițios, iar JSON poate fi accesat direct din browser, ceea ce poate expune date sensibile. Vom implementa două măsuri de securitate:

Protejarea Fișierelor SVG și JSON

Sanitizarea Fișierelor SVG

Adaugă acest cod pentru a curăța fișierele SVG înainte de a fi încărcate:

function sanitize_svg($file) {
    if (strpos($file['type'], 'svg') !== false) {
        if (!current_user_can('manage_options')) {
            $file['error'] = 'Doar administratorii pot încărca fișiere SVG.';
            return $file;
        }

        $svg = file_get_contents($file['tmp_name']);
        require_once __DIR__ . '/svg-sanitizer/autoload.php';
        $sanitizer = new enshrined\svgSanitize\Sanitizer();
        $clean_svg = $sanitizer->sanitize($svg);
        file_put_contents($file['tmp_name'], $clean_svg);
    }
    return $file;
}
add_filter('wp_handle_upload_prefilter', 'sanitize_svg');

Acest cod:
Permite încărcarea SVG doar pentru administratori
Curăță SVG-ul pentru a preveni atacurile XSS

Blocarea Accesului Direct la Fișiere JSON

Dacă ai fișiere JSON pe server, acestea pot fi accesate direct din browser. Adaugă acest cod pentru a preveni acest lucru:

function block_json_access() {
    if (strpos($_SERVER['REQUEST_URI'], '.json') !== false) {
        header("HTTP/1.1 403 Forbidden");
        exit;
    }
}
add_action('init', 'block_json_access');

Blochează accesul direct la fișiere JSON
Împiedică expunerea accidentală a datelor


4. Concluzie

Prin adăugarea acestui cod, îți poți extinde tipurile de fișiere permise în WordPress în siguranță. Ai acum suport pentru fișierele SVG, JSON, WebP, ZIP, APK și altele, dar și protecție împotriva atacurilor XSS și accesului neautorizat.

Dacă ai întrebări sau ai nevoie de ajutor pentru implementare, lasă un comentariu! 🚀

📩 Ai întrebări sau sugestii? Lasă un comentariu sau contactează-ne!

Report an issue (max 5 words):

Only logged-in users can submit reports.

Vrei să ne susții? Spune-le prietenilor despre noi și distribuie postarea preferată!

Vrei să ne susții? Spune-le prietenilor despre noi și distribuie articolul tău preferat!

Lasă un comentariu