Sei sulla pagina 1di 4

17 Trucchi e tecniche di utilizzo del file .

htaccess
Proteggere il proprio webserver e redirect tramite .htaccess
Andiamo ad analizzare delle tecniche essenziali per proteggere il nostro webserver da attacchi
estranei così come i più comuni metodi di redirect utilizzando il file .htaccess. Vi ricordo inoltre che
per poter creare un file .htaccess dovrete disporre di un editor di testo non proprio “basilare” (ad
esempio Notepad++) o utilizzare un generatore tipo http://www.htaccessredirect.net/index.php.

Questo articolo nasce come traduzione dell’articolo “17 Useful Htaccess Tricks and Tips” di kevin.

Generali

I seguenti htaccess ti permetteranno di svolgere semplici procedure di redirect ed ottimizzazione del


webserver.

1. Impostare il fuso orario

Molte volte quando usi la funzione date o mktime in php, ti viene mostrato un messaggio simpatico
riguardante il fuso orario. Questo è l’unico metodo per risolverlo: settare il fuso orario per il tuo
server. Una lista dei fusi supportati può essere trovata qui.

SetEnv TZ Australia/Melbourne

2. Redirect 301 permanenti e SEO Friendly

Che cosa significa SEO Friendly? Attualmente alcuni motori di ricerca hanno la capacità di
individuare un redirect 301 e di aggiornare i loro record esistenti

Redirect 301 http://www.queness.com/home http://www.queness.com/

3. Evitare la schermata di download

Solitamente quando cerchi di scaricare qualcosa da un web server, ti viene richiesto di decidere se
aprire il file o salvarlo. Puoi impedire che ciò accada utilizzando il codice seguente nel tuo file
.htaccess.

AddType application/octet-stream .pdf


AddType application/octet-stream .zip
AddType application/octet-stream .mov

4. Skippare il www

Una delle linee guida per un SEO è quella di fare in modo che ci sia un unico tipo di indirizzo che
punti al proprio sito web. Di conseguenza occorrerà fare in modo che tutto il traffico proveniente
tramite www venga ridirezionato all’indirizzo privo di www o viceversa.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.queness.com [NC]
RewriteRule ^(.*)$ http://queness.com/$1 [L,R=301]

5. Pagina di errore personalizzata

Come creare una pagina persoonalizzata per ogni tipo di errore.

ErrorDocument 401 /error/401.php


ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

6. Comprimere i files

Ottimizza i tempi di caricamento del tuo sito comprimendo i files in modo da ridurne le dimensioni.

# comprimere testo, html, javascript, css, xml:


AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

7. Cache dei files

Fai memorizzare i files nella cache in modo da ottimizzare i tempi di caricamento.

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

8. Disabilitare la cache per alcuni tipi di files

D’altra parte è possibile fare in modo che alcuni files che si aggiornano di frequente non vengano
memorizzati.

# disabilita esplicitamepte la cache per scripts e altri files dinamici


<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

Sicurezza

I seguenti codici htaccess ti permettono di aumentare il livello di sicurezza del tuo webserver. La
protezione dagli hotlink (link diretti) è un buon sistema per evitare ad altra gente di utilizzare
immagini memorizzate nel tuo server.

1. Protezione dagli hotlink tramite .htaccess


E’ odioso quando la gente ruba banda dal tuo sito utilizzando immagini che ospiti sul tuo server.
Usando questa protezione impedirai che ciò accada.

RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?queness.com/.*$ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

2. Prevenire attacchi hacker

Se vuoi aumentare il livello di sicurezza del tuo sito, puoi utilizzare queste righe per prevenire
alcune tecniche comuni di hacking individuando modelli di URL maligni.

RewriteEngine On

# proc/self/environ? no!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]

#Blocca ogni script che cerca di settare un valore mosConfig attraverso l'URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]

# Blocca ogni script base64_encode crap


RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

#Blocca ogni script che contiene un tag <script> nell'URL


RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

# Blocca ogni script che cerca di settare una variabile globale PHP via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]

# Blocca ogni script che cerca di modificare una variabile a _REQUEST via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})

# Invia tutte le richieste bloccate alla pagina di errore 403!


RewriteRule ^(.*)$ index.php [F,L]

3. Bloccare l’accesso al file .htaccess

Il codice seguente impedisce l’accesso ad utenti esterni al tuo file .htaccess. Può essere utilizzato
anche per altri tipi di files.

# proteggi htaccess file


<Files .htaccess>
order allow,deny
deny from all
</Files>

# previeni la visualizzazione di un file specifico


<Files secretfile.jpg>
order allow,deny
deny from all
</Files>

# tipi di files multipli


<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>
4. Rinominare il file .htaccess

Può essere anche utile rinominare il file .htaccess per proteggersi.

AccessFileName htacc.ess

5. Disabilitare la visualizzazione dei contenuti delle cartelle

Impedisci o consenti al server di mostrare l’indice dei files presenti nelle cartelle del tuo server web.

# disabilita la visualizzazione della cartella


Options All -Indexes

# abilita la visualizzazione della cartella


Options All +Indexes

6. Cambiare la pagina index di default

Puoi cambiare la pagina di apertura del sito da index.html, index.php ecc… con qualsiasi altro
nome.

DirectoryIndex business.html

7. Blocca i visitatori provenienti da un preciso dominio


# blocca i visitatori provenienti dai domini indicati
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
RewriteRule .* - [F]

</ifModule>

8. Blocca le richieste basate su un preciso User Agent

Questo metodo può salvare una buona quantità di banda bloccando alcuni bot o spiders in modo che
non passino sul tuo sito.

# blocca i visitatori indicati


<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|
clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>

9. Proteggi le cartelle disabilitando l’esecuzione di script


# proteggi le cartelle disabilitando l'esecuzione di script
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI