17 τεχνικές και μυστικά για χρήσιμο htaccess

24 Νοέ 2010 | Development

Δεν επιτρέπονται τα σχόλια.


htaccess

Έχω συλλέξει 17 μεθόδους σε αυτό το άρθρο που έχω χρησιμοποιήσει ή έχω δοκιμάσει, και θεωρώ πως μερικά από αυτά είναι ουσιώδη μυστικά που σας βοηθούν να προστατεύσετε των web server σας από επιθέσεις, ενώ κάποια άλλα είναι απλά τεχνικές που βελτιώνουν ή υποβοηθούν των διακομιστή σας.

Γενικά

Τα ακόλουθα htaccess θα σας επιτρέψουν να κάνετε απλές εργασίες όπως για παράδειγμα ανά-κατευθύνσεις και βελτιστοποίηση του web server σας.

1. Ορισμός ζώνης ώρας

Μερικές φορές όταν χρησιμοποιείτε συναρτήσεις όπως είναι η date ή η συνάρτηση mktime στην PHP μπορεί να δείτε ένα μήνυμα προειδοποίησης από το server σχετικά με τη ζώνη ώρας. Ακολουθεί ο κώδικας που θα σας επιτρέψει να λύσετε το πρόβλημα σας. Ορίστε μόνοι σας την ζώνη ώρας του server σας. Μια λίστα με όλες τις διαθέσιμες ζώνες ώρας μπορεί να βρεθεί και εδώ

SetEnv TZ Europe/Athens

2. Φιλική προς το SEO μόνιμη ανακατεύθυνση 301

Για ποιο λόγο είναι φιλική η ανακατεύθυνση 301 για το SEO; Στις ημέρες μας, μερικές μοντέρνες μηχανές αναζήτησης όπως είναι το Google, το Yahoo, το BIND και άλλες μπορούν να αντιληφθούν τις ανά-κατευθύνσεις και έτσι ενημερώνουν τους καταλόγους τους για αυτές τις αλλαγές.

Redirect 301 http://www.web-resources.eu/home http://www.web-resources.eu

3. Παράκαμψη του διαλόγου Download

Συνήθως όταν προσπαθείτε να κατεβάσετε κάτι από ένα web server αντιμετωπίζετε το διάλογο του περιηγητή διαδικτύου που σας ρωτά αν θέλετε να αποθηκεύσετε ή να ανοίξετε το αρχείο που κατεβάζετε. Για να απαλλάξετε τους χρήστες σας από αυτή τη διαδικασία μπορείτε να χρησιμοποιήσετε των κώδικα που ακολουθεί.

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

4. Παράκαμψη του www

Ένας από τους βασικούς κανόνες του SEO είναι να έχετε μόνο ένα URL που να δείχνει στην ιστοσελίδα σας. Ένας τρόπος για να το κάνετε είναι είτε να υποχρεώσετε όποια αίτηση έρχεται στον web server σας χωρίς www να την ανακατευθύνετε σε αυτή με το www ή το ανάστροφο.

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

5. Προσαρμοσμένες σελίδες σφαλμάτων

Δημιουργήστε της δικές σας σελίδες σφάλματος για κάθε τύπο σφάλματος

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

6. Συμπίεση αρχείων

Βελτιώστε την απόδοση του web server σας απλά μειώνοντας το μέγεθος των αρχείων με συμπίεση

# συμπίεση αρχείων text, 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

Η διατήρηση του στατικού περιεχομένου της σελίδας σας στην Cache των περιηγητών διαδικτύου των επισκεπτών της ιστοσελίδας σας βελτιώνει την απόδοση του web site σας.

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

8. Απενεργοποίηση της Cache για συγκεκριμένα αρχεία

Από την άλλη πλευρά μπορείτε να απενεργοποιήσετε συγκεκριμένους τύπους αρχείων ώστε να μην διατηρούνται στην Cache

# αναγκαστική απενεργοποίηση της Cache για σενάρια εντολών και άλλα δυναμικά αρχεία
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

Ασφάλεια

Με τα ακόλουθα htaccess θα μπορέσετε να βελτιώσετε το επίπεδο ασφάλειας του web server σας. Εδώ θα βρείτε κώδικα για να διακόψετε για παράδειγμα το hotlink των εικόνων σας.

1. Προστασία από το hotlink

Σας εκνευρίζει η κατάχρηση του bandwidth του web server σας, όταν οι άλλοι χρησιμοποιούν εικόνες από εσάς. Με τη χρήση του παρακάτω κώδικα θα τους απαγορεύσετε τη χρήση εικόνων από τη σελίδα σας.

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

2. Αποφυγή των Hacks

Αν θέλετε να βελτιώσετε το επίπεδο ασφαλείας του Web server σας, χρησιμοποιήστε τις ακόλουθες γραμμές κώδικα που μπλοκάρουν κάποιες κοινές τεχνικές επίθεσης με τον εντοπισμό ειδικών εντολών στο URL

RewriteEngine On

# proc/self/environ; Με τίποτα!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να ορίσει τιμή στο mosConfig μέσω κάποιου URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να παραβιάσει το site σας με αποστολή κωδικοποιημένων εντολών se base64_encode μέσω URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

# Αποκλεισμός κάθε σεναρίου που περιέχει την ετικέτα <script> στο URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να αλλάξει τις μεταβλητές PHP GLOBALS μέσω κάποιου URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να αλλάξει τις μεταβλητές _REQUEST μέσω κάποιου URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})

# Ανά-κατεύθυνση κάθε αποκλεισμένης αίτησης στην αρχική σελίδα με κωδικό σφάλματος 403
RewriteRule ^(.*)$ index.php [F,L]

3. Προστασία του αρχείου .htaccess

Ο κώδικας που ακολουθεί θα απαγορεύσει την πρόσβαση στο αρχείο .htaccess

# Αποκλεισμός πρόσβασης στο htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>

# Αποκλεισμός πρόσβασης σε συγκεκριμένο αρχείο
<Files secretfile.jpg>
 order allow,deny
 deny from all
</Files>

# Αποκλεισμός πολλαπλών τύπων αρχείων
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
 Order Allow,Deny
 Deny from all
</FilesMatch>

4. Αλλάξτε όνομα στο .htaccess

Ακόμα ένας τρόπος για να προστατεύσετε το htaccess σας από την πρόσβαση τρίτων είναι η μετονομασία του σε κάτι άλλο.

AccessFileName htacce.ss

5. Απενεργοποιήστε την πλοήγηση στο σύστημα αρχείων του web server σας

Διακόψτε ή επιτρέψτε την πλοήγηση στο σύστημα αρχείων του web server σας με τον ακόλουθο κώδικα.

# Απαγόρευση περιήγησης στους καταλόγους
Options All -Indexes
# Δικαίωμα περιήγησης στους καταλόγους
Options All +Indexes

6. Αλλάξτε την προεπιλεγμένη index σελίδα

Αν θέλετε μπορείτε να αλλάξετε την προεπιλεγμένη σελίδα index.html ή index.php σε ότι άλλο θέλετε εσείς

DirectoryIndex business.html

7. Απαγόρευση πρόσβασης σε κίνηση από συγκεκριμένο web site

# Αποκλεισμός επισκεπτών που έρχονται από συγκεκριμένο web site
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
 RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
 RewriteRule .* - [F]
</ifModule>

8. Απαγόρευση πρόσβασης σε συγκεκριμένους User-Agent

Αυτός ο κώδικας μπορεί να σας εξοικονομήσει bandwidth απαγορεύοντας την πρόσβαση σε bots ή spiders που σαρώνουν τη σελίδα σας και δεν τα θέλετε.

# Αποκλεισμός συγκεκριμένων User-Agent
<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. Προστασία καταλόγων με απαγόρευση εκτέλεσης σεναρίων

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

Περισσότερα για τον CorfuGmr

CorfuGmr

Ονομάζομαι Νίκος και ασχολούμαι με το internet και την κατασκευή ιστοσελίδων από το 1998. Σήμερα, μετά από 12 χρόνια γεμάτα με ενημέρωση, εκπαίδευση και εξάσκηση έχω ανεβάσει σε ένα άλλο επίπεδο τις γνώσεις μου και τις τεχνικές μου. Στα άρθρα μου προσπαθώ να σας δείξω τα μικρά, αλλά σημαντικά πράγματα που με έχουν ανεβάσει σε αυτό το επίπεδο.








Σχόλια



24 Νοεμβρίου 2010

[…] This post was mentioned on Twitter by Web Resoures.eu and Web Resoures.eu, Web Resoures.eu. Web Resoures.eu said: 17 τεχνικές και μυστικά για χρήσιμο htaccess http://goo.gl/fb/WZRWu […]




DigiMyth

11 Δεκεμβρίου 2010

Όταν αλλάζουμε όνομα στο htaccess πως ακριβώς το κάνουμε;

Την εντολή:

AccessFileName htacce.ss

Την βάζουμε στο αρχείο htaccess και δημιουργούμε ένα δεύτερο htacce.ss ή απλά αλλάζουμε το όνομα του και βάζουμε την εντολή μέσα;

Με την παραπάνω εντολή πως συνδιάζουμε αυτή:

# Αποκλεισμός πρόσβασης στο htaccess

order allow,deny

deny from all

Αν πρέπει να έχουμε ένα αρχείο htaccess και ένα htacce.ss?

Ευχαριστώ




11 Δεκεμβρίου 2010

Η παρατήρηση σου είναι σωστή, απλά από περιορισμένο χρόνο δεν το διατύπωσα σωστά.

Η εντολή AccessFileName htacce.ss θα πρέπει να πάει στο καθολικό αρχείο ρυθμίσεων του Apache. Αυτή η τεχνική είναι ιδανική για διαχειριστές Web Server και όχι για τον τελικό χρήστη.

Επίσης θα πρέπει να σημειωθεί πως η τεχνική που σκέφτηκες με το .htaccess αρχείο να δείχνει στο νέο αρχείο εντολών δεν μπορεί να βρει εφαρμογή γιατί αυτόματα ακυρώνει όλη τη διαδικασία. Αυτό που θέλω να πω είναι πως θέλουμε να προστατεύσουμε το περιεχόμενο του αρχείου .htaccess και για αυτό του αλλάζουμε όνομα, έτσι αν είχαμε ένα .htaccess αρχείο και ένα αρχείο .hta.ccess για παράδειγμα, με το .htaccess να κάνει χρήση της εντολής AccessFileName .hta.ccess, τότε κάποιος που θα αποκτούσε πρόσβαση στο αρχείο .htaccess θα έβλεπε άμεσα το νέο αρχείο που έχει όλες τις απαραίτητες εντολές για το server μας.

Οι εντολές order allow, deny και deny from all δεν πάνε μόνες τους. Αυτό που μπορείς να κάνεις είναι το ακόλουθο :

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

Η παραπάνω εντολή λέει στον Apache, πως για το αρχείο .htaccess, όποιος το ζητήσει απλά να του απαγορεύσει την πρόσβαση. Σε αυτή την περίπτωση η πρόσβαση στο αρχείο .htaccess επιτρέπετε μόνο από το FileSystem του διακομιστή και όχι από τον Apache. Με άλλα λόγια απλά ο Apache δεν δίνει σε κανένα το αρχείο .htacces.

Με την παραπάνω εντολή μπορείς να κόψεις όσα αρχεία θέλεις, ή ακόμα μπορείς να χρησιμοποιήσεις και το FilesMatch αντί για την Files στην οποία μπορείς να χρησιμοποιήσεις Regular Expressions και να επιτρέπεις ή να απαγορεύεις την πρόσβαση σε συγκεκριμένα αρχεία μέσω HTTP

Η εντολή FilesMatch συντάσσεται κάπως έτσι :

<FilesMatch ".(gif|jpe?g|png)$">
order allow,deny
deny from all
</Files>

Με τον παραπάνω κώδικα στο .htaccess σου θα απαγορεύσεις την πρόσβαση από το πρωτόκολλο HTTP για τα αρχεία gif, jpeg, jpg και png




Χρήστος

16 Απριλίου 2011

Συγχαρητήρια, ωραία παραδείγματα.
Θα ήθελα να ρωτήσω αν γίνετε το εξής:
Να έχω ένα φάκελο ας πούμε files και τα αρχεία του να μην είναι προσβάσιμα π.χ. http://blablabla.gr/files/index.php –>404 Page not found.
Κάτι τέτοιο απο μόνο του ξέρω ότι θα είναι εύκολο.
Αυτό που θέλω ταυτόχρονα όταν καλείτε το http://blablabla.gr/index.html
και μέσα σε αυτο το αρχείο έχω τον κώδικα ο server να του επιστρέφει την εικόνα κανονικά.
Δεν ξέρω αν γίνεται αλλά αν γίνεται πραγματικά ξέρω 4 (τουλάχιστον) λόγους που κάτι τέτοιο είναι ωφέλιμο.




16 Απριλίου 2011

Δυστυχώς δεν μπορώ να σε βοηθήσω με το πρόβλημα σου γιατί δεν είναι σαφές αυτό που ρωτάς. Μου τα μπερδεύεις λίγο και δεν έχω καταλάβει στο ακέραιο τι θέλεις να κάνεις. Αν είναι εύκολο ανέλυσε το λίγο παραπάνω για να δω τι μπορώ να κάνω ! 🙂




Konstantinos

23 Φεβρουαρίου 2012

Θελω να πω μονο ενα μεγαλο ευχαριστω..
Ειμαι πολυ «ψαρι» σε ολα και ολα μου φαινονται βασικα και χρησιμα γιατι προσπαθω να τα κανω ολα μονος μου.
Φιλικα
Κωστας,Ολλανδια




14 Μαρτίου 2013

Γεια σας

θέλω να έχω στο .htaccess Redirect απο το Root φακελο (httpdocs)όπου ειναι το http://www.poreia.org να πηγαινει σε ενα 2ο Site που ετοιμαζω και βρισκεται στο ιδιο domain αλλα σε υποφακελο

/httpdocs/newweb.

Ετσι όταν καποιος γραφει http://www.poreia.org να τον πηγαινει στο http://www.poreia.org/newweb και σε 2η κατασταση αν ειναι δυνατον η ανακατευθυνση να μην δειχνει την διευθυνση να φαινεται http://www.poreia.org.

Δεν ξερω αν παιζει ρολο οτι η πλατφορμα ειναι Plesk

Το 1ο site φτιαγμενο απο Frontpage και το νεο σε joomla.




15 Μαρτίου 2013

Καλημέρα Κωνσταντίνε,

δοκίμασε τον κώδικα που ακολουθεί:

RedirectMatch 301 ^/newweb/$ http://example.com$1

Σημείωση, το newweb είναι το όνομα του φακέλου που φιλοξενεί την νέα εγκατάσταση σου. Αντικατέστησε το newweb με το όνομα του φακέλου σου.


Συγνώμη, τα σχόλια για αυτό το άρθρο είναι κλειστά.



^
Top
css.php