Malgré la puissance de mod_rewrite, on n'arrive pas toujours à ses fins quand il s'agit de protéger son serveur d'attaques de tout poil.
Par exemple, mod_rewrite, s'il peut vérifier une uri, sera impuissant à analyser et éventuellement rejeter le contenu d'un POST qui pourrait contenir du code malicieux du style injection sql et autres rootkit.
J'ai toujours rêvé de maîtriser suffisamment le C pour être capable d'écrire un module qui filtrerait les requêtes http avant leur traitement dans le serveur http.
Ce module existe et est remarquable! Développé par Ivan Ristic auteur de Apache Security mod_security est un module complémentaire à Apache. Il fonctionne un peu comme iptables pour les datagrammes IP, dans le sens où chaque requête http est capturée avant qu'elle ne soit envoyée au serveur Apache. Elle est analysée et filtrée.
En fonction du filtre et du choix du webmaster, une ou plusieurs actions seront imposées à la requête (allow, deny, pass, exec, log, pause, redirect etc...).
mod_security permet même de filtrer la réponse du serveur (output filtering) !
La construction d'une règle de filtrage se fait, comme pour le rewriting, grâce à l'utilisation des regex. Une connaissance de base de celles-ci est donc requise pour qui souhaiterait faire ses propres règles.
Pour les autres, il existe des bibliothèques de règles (plusieurs milliers!) sur ce site:
http://www.gotroot.com/tiki-index.php?p ... rity+rules
Ou bien celui-ci sur le site du concepteur:
http://www.modsecurity.org/download/rul ... neral.conf
Pour ceux qui craindraient une perte de performance, ce filtrage est débrayable, par serveur, répertoire et, depuis peu, par type de requête.
Source: http://www.modsecurity.org/
Pour les heureux utilisateurs de Debian:
apt-get install libapache2-mod-security