Trucuri .htaccess esentiale pentru WordPress

postat acum 2 ani de Stefanescu Mihai in categorie iNoob

Fisierul .htaccess este o unealta puternica de configurat serverul web (sau in unele cazuri pachetul de gazduire) pe care ar trebuii sa-l folositi de fiecare daca cand folositi WordPress.Acest fisier se gaseste in folderul in care a fost instalat WordPress-ul (directorul root).

In acest articol am sa va explic setarile de baza pe care trebuie sa le faceti pentru a avea un wordpress cat mai securizat.PregatireIn primul rand trebuie sa gasim acest fisier .htacces

Atentie: Fa back-up inainte de a incepe sa editezi acest fisier!
Atentie la faptul ca anumite sisteme de operare (ex: Mac OS X) considera fisierele ce incep cu un punct (.) sunt fisiere de configurare a sistemului si nu uitati sa da-ti refresh site-ului dupa fiecare modificare in .htaccess pentru ca o singura greseala poate duce la “oprirea” site-ului.Sa scriem Codul!

1. Opreste accesul la fisierul .htaccess din afara site-ului

Pentru a ne proteja de atacurile externe asupra acestui fisier putem folosi acest cod:

# Deny access to .htaccess and .htpasswd if in use
<FilesMatch "(\.htaccess)">
  Order deny,allow
  Deny from all
</FilesMatch>

2. Oprirea copierii imaginilor

Aceasta asa zisa “copiere” a imaginilor a devenit o problema destul de mare. La ce ma refer? La faptul ca exista oameni prea comozi pentru a descarca o imagine si pentru a o uploada pe serverul lor ci pur si simplu ii copiaza link-ul de pe site-ul tau si o pune pe site-ul lor. Acest lucru iti poate micsora tie performanta si latimea de banda (bandwidth).

Nu uitati sa schimba-ti siteul_meu.ro cu adresa site-ului vostru si link-ul de jos cu o imagine care sa apara in locul imaginii respective.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?siteul_meu.ro [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?siteul_meu.ro [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]

3. Activare Browser Caching

Probabil ai multe fisiere cu o dimensiune destul de mare care sunt schimbate destul de rar (de ex: Fisierele CSS de la bootstrap sau de la foundation, js-urile, s.a.m.d), deci cred ca este o idee buna sa le salva in cache-ul browserului. Fisierele din cache (CSS sau JS) se incarca mult mai repede daca sunt pastrate in cache si incarcate de acolo decat sa fie descarcate la fiecare vizita a vizitatorului.

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

4. Ban IP Permanent

Daca aveti destula vechime in aceasta lume a wordpress-ului sau a web-ului probabil deja aveti idee de ce aveti nevoie de acest cod…fie ca va doriti sa banati un IP de pe care cineva incearca sa va “sparga” contul de admin, fie ca cineva tot lasa comentarii in care face reclama (spam) puteti folosi urmatorul cod pentru a le da BAN permanent.Nu uitati sa schimbati adresele de acolo cu IP-urile pe care doriti sa le banati.

<Limit GET POST>
order allow,deny
deny from 123.456.78.9
deny from 987.654.32.1
allow from all
</Limit>

5. Blocarea fisierelor

Nici nu cred ca mai are rost sa va spun ce s-ar putea intampla daca cineva v-ar accesa fisierele importante din wordpress din afara site-ului.

# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

6. Protectie Wp-content

Folderul wo-content este unul dintre cele mai importante din wordpress pentru aici sunt salvate temele, plugin-urile, imaginile, fisierele de cache, etc.

Creati un fisier .htaccess separat cu codul de mai jos si uploadati-l in folderul wp-content:

Order deny,allow
 Deny from all
 <Files ~ ".(xml|css|jpe?g|png|gif|js)$">
 Allow from all
 </Files>

7. Dezactivarea interferei XML-RPC

Cu ajutorul interfetei XML-RPC puteti lucra (postat articole, editat comentarii, etc) in wordpress din afara site-ului. Chiar daca aceasta interfata este foarte folositoare folosita impreuna cu aplicatiile de Andorid, iOS si chiar Windows poate fi o tinta perfecta pentru atacurile DDoS.

<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

Codul de mai sus poate fi folosit doar daca site-ul nu functioneaza pe post de blog pentru ca acest cod nu permite trackback-urile. Daca site-ul este folosit pe post de blog puteti folosi codul de mai jos:

<IfModule mod_setenvif.c>
  <Files xmlrpc.php>
    BrowserMatch "Poster" allowed
    BrowserMatch "WordPress" allowed
    BrowserMatch "Windows Live Writer" allowed
    BrowserMatch "wp-iphone" allowed
    BrowserMatch "wp-android" allowed
    Order Deny,Allow
    Deny from All
    Allow from env=allowed
  </Files>
</IfModule>

8. PHP – Opreste afisarea erorilor

Un punct foarte important. Cand PHP genereaza o eroare in acelasi timp ofera si o multime de informatii (informatii care daca ajung in mainile unei persoane rauvoitoare va poate afecta).Nu trebuie decat sa adaugati acest cod in fisierul .htaccess:

php_flag display_errors Off

Concluzie

Dureaza foarte putin sa pui in practica toate informatiile pe care le-am scris mai sus. Eu cred ca se merita sa dedici 10-15 minute pentru a iti imbunatati securitatea blogului ca mai apoi vizitatorii tai sa se poate bucura in liniste de blogul tau.

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group
Acest articol a fost mutat de pe vechea platforma.
Pentru orice eroare aparuta la mutare va rog sa ma contactati!
Comentariu postate de Niculae Bucur Ion
Foarte bun acest articol, este exact ce aveam nevoie.