Réécriture conditionnelle

WRInaute impliqué
Bonjour à tous,


Toujours en guerre avec des robots spammeurs qui font tourner mes règles de réécriture en boucle, je cherche à interdire les query string d'un certain type, ou plutôt à placer une condition avant la réécriture, pour empêcher que ça ne parte en sucette.

D'abord, est ce que les étoiles dans cette url sont des caractères originaux, où est-ce Apache qui convertit les caractères :oops:

Code:
/mon-site.com/repertoire-1/****://animehell.freeoda.com/foro/****://www.gieldaprezentow.pl/viewtopic.php?p=1656

Dès lors que ces caractères seraient bien présents dans l'url au moment de la tentative d'injection (ou autre,pour moi ça ressemble à une injection, le problème c'est que ça mène à un déni de service et que mon hébergeur n'est pas content), comment puis-je les interdire puisqu'ils ont une signification spéciale dans le contexte des expressions régulières.

Sinon, j'imagine que je n'ai qu'a placer une règle conditionnelle qui interdit le "http" dans la query string ?

J'ai bon ou pas ?

Merci d'avance :D

Supercureuil
 
WRInaute impliqué
As tu regardé dans le log d'apache l'url demùandée pour voir si elle contient les **** ou non?

Ensuite, interdire http dans la query string me parait bien si tes visiteurs n'ont aucune raison d'entrer une url. Evidement, si tu as un annuaire, ou un forum (on entre une url pour mettre son www), tu ne peux pas interdire http dans les query string, sauf a passer par POST au lieu de GET dans tes formulaires.
 
WRInaute impliqué
Ah, un signe de vie dans la nuit sombre !

Merci Vap ! Oui j'ai regardé dans mes logs, c'est de là que vient cette ligne d'ailleurs. Et c'est noté comme ça, avec les étoiles.

Sinon entre-temps j'ai remarqué que toutes les mauvaise query contenaient "viewtopic.php", et j'ai axé ma condition là-dessus. J'attends que les logs nouveaux soient disponibles et je tiens au jus du résultat !

++
 
WRInaute impliqué
Re-,

Bon je rebondis sur le post d'hier, mais je dévie un peu.

J'ai interdit certaines ip sur le site, mais je ne suis pas sûr que ça soit correct :

Code:
RewriteEngine On
RewriteCond %{REMOTE_ADDR}  ^66\.249\.65\.231$ [OR]
RewriteCond %{REMOTE_ADDR}  ^66\.249\.70\.38$ [OR]
RewriteCond %{REMOTE_ADDR}  ^72\.30\.215\.48$ [OR]
RewriteCond %{REMOTE_ADDR}  ^72\.30\.215\.55$ [OR]
RewriteCond %{REMOTE_ADDR}  ^74\.6\.8\.125$ [OR]
RewriteCond %{REMOTE_ADDR}  ^74\.6\.18\.222$ [OR]
RewriteCond %{REMOTE_ADDR}  ^74\.6\.18\.229$ [OR]
RewriteCond %{REMOTE_ADDR}  ^74\.6\.18\.248$ [OR]
RewriteCond %{REMOTE_ADDR}  ^86\.213\.163\.223$ [OR]
RewriteCond %{REMOTE_ADDR}  ^90\.16\.35\.6$ [OR]
RewriteCond %{REMOTE_ADDR}  ^90\.26\.132\.29$
RewriteRule ^.*$   -   [F]

Le [OR] n'est pas nécessaire pour la dernière condition je suppose :wink:

Ca a l'air de fonctionner, mais certaines ip arrivent quand même à avoir des retours 200 sur des pages ded répertoires profonds dans lesquels il y a aussi un htaccess, mais sans les rejets d'ip, juste avec les réécritures. C'est normal que l'htaccess à la racine ne porte pas sur ces répertoires ? Que dois-je faire, simplement ajouter les rejets d'ip dans le htaccess du sous-repertoire ?

Merci pour votre aide !

supercureuil
 
WRInaute impliqué
Il faut mettre ce qui suit dans le .htaccess du sous répertoire si tu veux que les règles définies à la racine continuent de s'appliquer :

Code:
RewriteOptions inherit

Sinon, tu recopie les règles qu'il te faut dans le .htaccess du sous répertoire.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut