Πώς να προστατέψουμε το Website μας μέσω του .htaccess – Part 2
Σε συνέχεια του προηγούμενου άρθρου σχετικά με την παραμετροποίηση του htaccess με τέτοιον τρόπο ώστε να προστατέψουμε το site μας κατά το δυνατόν, παρακάτω θα βρείτε ορισμένες επιπλέον προσθήκες που μπορούν να εισαχθούν και να σας βοηθήσουν σε αυτήν την κατεύθυνση.
Σε κάθε περίπτωση, βέβαια, θα πρέπει οι τροποποιήσεις να πραγματοποιούνται από τον υπεύθυνο προγραμματιστή, καθώς είναι πιθανό να προκύψουν προβλήματα με την ιστοσελίδα και την ομαλή λειτουργία της (πχ 500 internal server error, 403 forbidden, 404 not found κλπ).
-
.htaccess – Expire headers
Με την ενεργοποίηση των expire headers ορίζουμε, για το κάθε request που πρόκειται να πραγματοποιηθεί, εάν τα δεδομένα θα ληφθούν από τον server ή από την cache του browser.
Με τον τρόπο αυτό, έχουμε αποθηκευμένα δεδομένα στον browser του επισκέπτη, συνεπώς μειώνουμε τα requests προς τον server (και την ιστοσελίδα) και επιπλέον, μειώνουμε τον όγκο των δεδομένων που θα σταλούν από την ιστοσελίδα προς τον browser του εκάστοτε επισκέπτη.
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault “access plus 5 seconds”
ExpiresByType image/x-icon “access plus 2592000 seconds”
ExpiresByType image/jpeg “access plus 2592000 seconds”
ExpiresByType image/png “access plus 2592000 seconds”
ExpiresByType image/gif “access plus 2592000 seconds”
ExpiresByType application/x-shockwave-flash “access plus 2592000 seconds”
ExpiresByType text/css “access plus 604800 seconds”
ExpiresByType text/javascript “access plus 216000 seconds”
ExpiresByType application/javascript “access plus 216000 seconds”
ExpiresByType application/x-javascript “access plus 216000 seconds”
ExpiresByType text/html “access plus 600 seconds”
ExpiresByType application/xhtml+xml “access plus 600 seconds”
</ifModule>
-
.htaccess – Enable keep-alive
Ουσιαστικά με την ενεργοποίηση του keep-alive χρησιμοποιούμε το ήδη ενεργό connection προς τον server ώστε να μειωθεί ο χρόνος δημιουργίας νέου. Μόλις επιλέξουμε μια ιστοσελίδα να φορτώσει στον browser μας, πρώτα ο browser επικοινωνεί με τον server (μάθετε περισσότερα για website hosting υπηρεσίες), ώστε να δημιουργηθεί ένα connection και στη συνέχεια ζητάει τα δεδομένα.
Προκειμένου να μην “χάνουμε” χρόνο περιμένοντας να ολοκληρωθεί το connection σε κάθε μας request, ενεργοποιούμε το keep-alive, οπότε στο ήδη ενεργό connection που έχουμε με τον server, ζητάμε και τα υπόλοιπα δεδομένα κατά την περιήγησή μας.
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>
-
Block access to log files
Με τον τρόπο αυτό, αποκόπτουμε την πρόσβαση στα log files της εφαρμογής μας, με αποτέλεσμα να μην μπορεί να τα δει κάποιος και να εκμεταλλευτεί κάποια ευπάθεια η οποία αναγράφεται στο error_log.
<Files ~ “\.log$”>
Order allow,deny
Deny from all
</Files>
-
htaccess protection
Προστασία του αρχείου htaccess, ώστε να μην μπορέσει κανένας να το παραμετροποιήσει (με κακόβουλο τρόπο) ή να το κατεβάσει και να το αναγνώσει.
<Files ~ “^.*\.([Hh][Tt][Aa])”>
order allow,deny
deny from all
satisfy all
</Files>
-
Block access to hidden files and directories
Προστασία των κρυφών αρχείων και φακέλων, ώστε να μην μπορέσει κανένας να τα αναγνώσει. Καθώς είναι κρυφά αρχεία, έχουν πολύ συγκεκριμένο λόγο που είναι κρυφά (σε αυτά δεν πρέπει να έχει κανένας πρόσβαση). Ένα παράδειγμα κρυφού αρχείου, είναι το αρχείο .htaccess και το αρχείο .user.ini (το configuration της php για το hosting μας).
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule “(^|/)\.” – [F]
</IfModule>
-
Block access to potential sensitive files
Προστασία των ευαίσθητων αρχείων, ώστε να μην μπορέσει κανένας να τα αναγνώσει ή να τα προσπελάσει. Καθώς είναι “ευαίσθητα” αρχεία, περιέχουν δεδομένα που δεν πρέπει να εμφανιστούν.
Όλα τα αρχεία με κατάληξη sh, είναι shell scripts, τα sql είναι αρχεία με δεδομένα της βάσης δεδομένων μας, conf είναι configuration αρχεία, log είναι log files κλπ. Αυτά τα αρχεία θεωρούνται ευαίσθητα και δεν πρέπει να έχει πρόσβαση, κανένας πέρα από τον διαχειριστή και τον προγραμματιστή.
Αυτά τα αρχεία, δεν πρέπει να μπορούν να γίνουν download ή να εμφανιστούν στον browser.
<FilesMatch “(^#.*#|\.(bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$”>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
Τελευταίο και σημαντικότερο:
-
Ενεργοποίηση gzip compression
Με την ενεργοποίηση του gzip, συμπιέζεται το περιεχόμενο που αποστέλλεται από τον server προς τον εκάστοτε browser, με αποτέλεσμα η πληροφορία και τα δεδομένα να απαιτούν λιγότερο χρόνο και να έχουν μικρότερο όγκο.
Το gzip εφαρμόζεται αφού ολοκληρωθεί η εκτέλεση του κώδικα από την πλευρά του web server, αλλά πριν αποσταλούν τα δεδομένα από τον server προς τον browser του επισκέπτη.
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
Περιηγηθείτε στη σελίδα της IpHost και μάθετε περισσότερα για υπηρεσίες όπως το Cloud Hosting & o Dedicated Server. Επιλέξτε μέσα από τα ολοκληρωμένα πακέτα καιεπικοινωνήστε μαζί μας για να σας καθοδηγήσουμε στην καλύτερη επιλογή για τις ανάγκες της επιχείρησης σας.
Και, φυσικά, είμαστε διαθέσιμοι για οποιαδήποτε βελτίωση ή προσθήκη έχετε να μας προτείνετε. Μπορείτε να κάνετε submit για feature request από την φόρμα επικοινωνίας.