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. Va premesso che per poter utilizzare correttamente tutte le funzionalità seguenti dovete sempre assicurarvi che il vostro hoster ve ne dia la possibilità, non dimenticate quindi mai di chiedere prima di procurarvi un nuovo spazio web. Vi ricordo inoltre che per poter creare un file .htaccess dovrete disporre di un editor di testo non proprio “basilare” (ad esempio Notepad++) oppure dovrete salvare il file come file di testo, caricarlo sul vostro server e procedere con la rinomina direttamente usando il client FTP.
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
Copyright e utilizzo del seguente articolo
I sistemi e le tecniche dimostrate in questo tutorial non possono essere utilizzati senza l’attribuzione dei meriti all’autore originale. Non puoi quindi copiare l’intero tutorial (a meno che il permesso non sia accordato), in Inglese o in qualsiasi altra lingua.
Si ringrazia ancora Queness per il permesso accordato.
Thanks to Queness for the permission.