.htaccess

WordPress savet: Šta sve može vaš .htaccess

October 30, 2014
Ivan Minić

Kada je nastao, zajedno sa prvim web serverima, svrha .htaccess fajla bila je, kao što mu i ime kaže, da kontroliše pristup direktorijumima i fajlovima. Danas, njegova primena je šira, i služi da se uz pomoć njega konfiguriše mnoštvo parametara servera, u okviru direktorijuma u kome se nalazi, i pod direktorijuma koji postoje. Po defaultu, WordPress ga koristi da bi generisao SEO friendly URL-ove u okviru sistema, ali postoje još neke stvari koje biste mogli uraditi uz pomoć .htaccess, a koje vam mogu biti interesantne.

Neke od ovih stvari, možda, vaš web server već radi po default-u, pa nemate potrebe za dodatnim podešavanjima, ali ako to nije slučaj, evo kako to možete uraditi.

  1. Onemogućite pregled sadržaja direktorijuma. Primetili ste sigurno nekad da ako upišete putanju do nekog direktorijuma, u svom web browseru dobijete spisak svih fajlova koji se tamo nalaze. Iako se ne može videti sadržaj sistemskih biblioteka, nije dobro da ovakav spisak bude dostupan svima. Da to onemogućite, u .htaccess dodajte:
    Options -Indexes
  2. Onemogućite izvršavanje PHP koda u direktorijumima gde to nije potrebno. Recimo, direktorijum /wp-content/uploads/ često biva meta napada i u njemu se postavljaju maliciozni .php fajlovi, koji ako se izvrše, mogu inficirati celu WordPress instalaciju. Kako se ovaj direktorijum koristi za upload fajlova i slika, i nema drugu svrhu, kreirajte prazan .htaccess fajl, u njega upišite sledeći kod, a zatim ga postavite u taj direktorijum.
    <Files *.php>
    deny from all
    </Files>
  3. Onemogući neovlašćen pristup .htaccess fajlu. Na ovaj način limitirate pristup  drugima, ali vi i dalje možete pristupiti kroz FTP, ili hosting panel.
    <files ~ "^.*.([Hh][Tt][Aa])">
    order allow,deny
    deny from all
    satisfy all
    </files>
  4. Onemogući neovlašćen pristup wp-config.php fajlu. Isto kao i iznad, limitirate pristup fajlu u kome su najvažniji parametri za pristup vašem WordPress-u.
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>
  5. Onemogući pristup određenim fajlovima u /wp-content/ direktorijumu. Potrebno je postaviti u novi .htaccess koji se nalazi u samom folderu, a cilj je da se onemogući pristup sistemskim datotekama, a da se statičkim fajlovima, slikama, CSS i JS fajlovima može neometano pristupati.
    Order deny,allow
    Deny from all
    <Files ~ ".(xml|css|jpe?g|png|gif|js)$">
    Allow from all
    </Files>
  6. Omogućite pristup Admin panelu samo sa određenih IP-adresa. Postavlja se u zasebni .htaccess fajl koji se nalazi u /wp-admin/ direktorijum, a omogućava da limitirate pristup admin panelu samo sa određenih IP-adresa.
    AuthUserFile /dev/null
    AuthGroupFile /dev/null
    AuthName "WordPress Admin Access Control"
    AuthType Basic
    <LIMIT GET>
    order deny,allow
    deny from all
    # whitelist Home IP address
    allow from xx.xx.xx.xxx
    # whitelist Work IP address
    allow from xx.xx.xx.xxx
    </LIMIT>
  7. Uradite trajni redirekt za izmenjene ili nove URL-ove. Ako ste recimo promenili ime kategorije, taga, ili ste neke stvari ispremeštali, uradite 301 redirekciju.
    Redirect 301 /oldurl/ http://www.example.com/newurl
    Redirect 301 /category/television/ http://www.example.com/category/tv/
  8. Zabranite hot-linkovanje slika. Ako ste primetili da ljudi kradu vaše fotografije, postavljaju ih direktno kod sebe na sajt i time vam iskorištavaju resurse, to možete lako blokirati. Potrebno je da u kodu izmenite ime svog domena, i putanju do slike koju želite da im se prikazuje umesto originalne.
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://(.+.)?vasdomen.com/ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteRule .*.(jpe?g|gif|bmp|png)$ http://vasdomen.com/images/stolen.jpg
  9. Recite browseru vašeg korisnika koliko da kešira koje fajlove. Keširanje fajlova u okviru browsera značajno ubrzava učitavanje sajta svaki naredni put nakon prvog. Mnogi od velikih fajlova se na sajtovima vrlo retko menjaju (logo, CSS fajlovi, pozadina i sl.)
    <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>
  10. Obezbedite /wp-includes/. Fajlovima u ovom direktorijumu korisnici ne pristupaju, već se oni uvek pozivaju iz drugih fajlova. Stoga je dobro zabraniti spoljni pristup.
    # 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>

Pogledajte i preporuke iz zvanične WordPress dokumentacije – Hardening WordPress.

2 komentara. Ostavi novi

Kako da osigurate vaš Wordpress sajt?
December 9, 2014 9:07 am

[…] Preko .htaccessa možemo i onemogućiti pristup našem wp-config.php fajlu gde nam se nalaze kredencijali za mysql bazu. Detaljnije o moćima .htaccess-a možete pročitati u blogpostu kolega iz mCloud-a. […]

Reply

hvala na dobrim savetima sve pohvale za mcloud

Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

mCloud mailing lista
Da li želiš da se prijaviš na mCloud mailing listu i svake nedelje dobijaš informacije o našim tekstovima na blogu i novostima iz mCloud-a?
Nemoj više prikazivati