Pe cisnet.ro există deja ghiduri comprehensive despre securizarea WordPress și despre securizarea cPanel. Dar nu toate site-urile rulează WordPress. HTML static, aplicații PHP custom, Joomla, Drupal, Opencart și alte platforme au vulnerabilități diferite și necesită abordări de securitate specifice.
Diferențele fundamentale față de securizarea WordPress
WordPress are o suprafață de atac specifică: plugin-uri vulnerabile, teme compromise, wp-admin accesibil. Site-urile non-WordPress au provocări diferite:
- HTML static: suprafață de atac minimă, dar riscuri la nivelul serverului, contaminare prin alte site-uri de pe același hosting
- PHP custom: vulnerabilități în codul propriu (SQL injection, XSS, CSRF) dacă nu sunt implementate practici de securitate
- Joomla și Drupal: extensii și module third-party, similar cu plugin-urile WordPress dar cu ecosisteme diferite
- Opencart și alte CMS-uri e-commerce: date de plată, date personale ale clienților, obligații PCI DSS
Securizarea la nivel de server: fundația pentru orice platformă
Configurarea corectă a permisiunilor de fișiere
Permisiunile incorecte sunt una dintre cele mai frecvente cauze ale compromiterii site-urilor, indiferent de platforma CMS:
# Permisiuni corecte pentru fișiere și directoare
# Verificare și setare prin SSH
# Directoare: 755 (rwxr-xr-x)
find /home/user/public_html -type d -exec chmod 755 {} \;
# Fișiere: 644 (rw-r--r--)
find /home/user/public_html -type f -exec chmod 644 {} \;
# Fișiere de configurare cu date sensibile: 600 (rw-------)
chmod 600 /home/user/public_html/config.php
chmod 600 /home/user/public_html/.env
# NICIODATĂ 777 pe fișiere sau directoare în producție
# 777 permite oricui să scrie în acel director sau fișier
Configurarea .htaccess pentru Apache
# Protecție .htaccess esențială pentru orice site pe Apache
# Ascundeți indexul directorului
Options -Indexes
# Blocați accesul la fișiere sensibile
<FilesMatch "\.(env|log|sql|bak|config|ini|old)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Blocați accesul la fișierele ascunse
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
# Forțați HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Blocați XML-RPC dacă nu este necesar (pentru orice aplicație PHP)
<Files "xmlrpc.php">
Require all denied
</Files>
# Headers de securitate
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Securizarea aplicațiilor PHP: vulnerabilitățile comune
Protecție SQL Injection
<?php
// NESIGUR: SQL injection posibil
$id = $_GET['id'];
$query = "SELECT * FROM products WHERE id = $id";
// SIGUR: Prepared statements cu PDO
$pdo = new PDO('mysql:host=localhost;dbname=db', $user, $pass);
$stmt = $pdo->prepare("SELECT * FROM products WHERE id = ?");
$stmt->execute([$_GET['id']]);
$product = $stmt->fetch();
// SIGUR alternativ: mysqli cu prepared statements
$conn = new mysqli($host, $user, $pass, $db);
$stmt = $conn->prepare("SELECT * FROM products WHERE id = ?");
$stmt->bind_param("i", $_GET['id']);
$stmt->execute();
?>
Protecție XSS (Cross-Site Scripting)
<?php
// NESIGUR: Output direct fără escapare
echo $_GET['search'];
// SIGUR: escapare obligatorie pentru orice date de la utilizator
echo htmlspecialchars($_GET['search'], ENT_QUOTES, 'UTF-8');
// Pentru output în atribute HTML
echo htmlspecialchars($variabila, ENT_QUOTES, 'UTF-8');
// Content Security Policy prin .htaccess sau PHP
header("Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'");
?>
Joomla: securizare specifică
- Actualizare imediată la fiecare versiune nouă, Joomla are un record bun de patch-uri de securitate rapide
- Mutarea directorului administrator la o adresă personalizată (setare din Joomla Global Configuration)
- Activarea autentificării în doi factori pentru conturile de administrator
- Extensii de securitate recomandate: Akeeba Backup, RSFirewall!, AdminTools
- Verificarea periodică a extensiilor instalate față de Joomla Vulnerable Extensions List
Monitorizarea integrității fișierelor
Orice site, indiferent de platformă, beneficiază de monitorizarea integrității fișierelor pentru detectarea rapidă a modificărilor neautorizate:
# Generarea unui hash al fișierelor actuale (snapshot)
find /home/user/public_html -type f | sort | xargs md5sum > /home/user/file_hashes.txt
# Compararea cu snapshot-ul anterior pentru detectarea modificărilor
md5sum -c /home/user/file_hashes.txt 2>/dev/null | grep FAILED
# Script cron pentru monitorizare automată zilnică
0 6 * * * /usr/bin/find /home/user/public_html -type f -newer /home/user/last_check.txt -exec echo "Modificat: {}" \; | mail -s "Alerta fisiere modificate" admin@domeniu.ro
Pe cPanel, modulul Imunify360 (disponibil pe multe planuri de hosting) monitorizează automat integritatea fișierelor și alertează la modificări suspecte.
Backup-urile: ultima linie de apărare
Indiferent de cât de bine este securizat un site, backup-urile rămân esențiale. Citiți ghidul nostru dedicat despre backup și restaurare prin cPanel pentru metodologia completă. Regula 3-2-1 se aplică pentru orice platformă: 3 copii, pe 2 suporturi diferite, 1 off-site.
Concluzie
Securizarea site-urilor non-WordPress necesită aceeași atenție ca și securizarea WordPress, cu adaptarea la specificul platformei. Permisiunile corecte de fișiere, .htaccess bine configurat, protecția la nivel de cod PHP și monitorizarea continuă sunt fundamente comune pentru orice platformă.
Completați cu ghidul nostru despre securizarea cPanel și a serverului web.
Surse
Afirmațiile din acest articol se sprijină pe documentația oficială de mai jos. Verificați sursele direct, fiindcă recomandările motoarelor de căutare și ale producătorilor se schimbă.
- Anteturile HTTP, developer.mozilla.org
- De ce contează HTTPS, web.dev
- Transport Layer Security, developer.mozilla.org
Dorel Tănase, fondatorul agenției GOAI din Alba Iulia. În mediul online din 1997, în optimizare SEO din 2007. Am lucrat pe sute de site-uri din România și scriu cursurile și articolele de pe CISNET din ce am testat direct, nu din teorie. Profilul autorului.