[URL Rewriting] Comment empêcher le contournement?

Discussion dans 'Débuter en référencement' créé par Helldream, 14 Septembre 2007.

  1. Helldream
    Helldream Nouveau WRInaute
    Inscrit:
    26 Avril 2007
    Messages:
    38
    J'aime reçus:
    0
    Bonjour,

    J'ai mis en place un système d'url-rewriting sur mon site. Voici le code du htaccess :

    Code:
    AddType x-mapp-php5 .php
    
    RewriteEngine on
    
    # redirige les urls sans les www vers celle avec
    RewriteCond %{HTTP_HOST} !^www\.puissance-info\.com [NC]
    RewriteRule (.*) http://www\.puissance-info\.com/$1 [QSA,R=301,L]
    
    # http://www.puissance-info.com/
    RewriteRule ^$ /index.php?section=accueil&action=index&id=&page= [L]
    
    # ex: http://www.puissance-info.com/presentation/
    RewriteRule ^([_a-zA-Z]+)[-_/0-9a-zA-Z]*/$ /index.php?section=$1&action=index&id=&page= [L]
    
    # ex: http://www.puissance-info.com/creation_sites/basic.html
    RewriteRule ^([_a-zA-Z]+)[-_/0-9a-zA-Z]*/([_a-zA-Z]+)-?([0-9]*)-?p?([0-9]*)\.html$ /index.php?section=$1&action=$2&id=$3&page=$4 [L]
    
    # accès à l'admin
    RewriteRule ^admin/([_a-zA-Z]+)?[-_/0-9a-zA-Z]*/([_a-zA-Z]+)-?([0-9]*)-?p?([0-9]*)\.html$ /index.php?section=admin_$1&action=$2&id=$3&page=$4 [L]

    Je pense que mes règles sont écrites correctement, et le résultat est celui attendu sur le site. Par contre, je voudrais maintenant empêcher l'utilisation d'url ne répondant pas à ces règles (par exemple accès direct à un fichier du serveur, ou encore accès à une page sans l'utilisation des url réécrites). Comment pourrais-je mettre ça en place?

    Merci d'avance pour vos réponses!
     
  2. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 646
    J'aime reçus:
    1
    avec le code suivant au début de chaque page :
    Code:
    $url_attendue = ... ; //(avec les paramètres éventuels)
    $url_demande = str_replace($_ENV['SCRIPT_URL'], $_ENV['REQUEST_URI'], $_ENV['SCRIPT_URI']);
    if ($url_demande <> $url_attendue) {
    	header("Status: 301 Moved Permanently", false, 301);
    	header("Location: $url_attendue");
    	exit;
    }
    
     
  3. Pandore
    Pandore WRInaute passionné
    Inscrit:
    14 Octobre 2005
    Messages:
    1 108
    J'aime reçus:
    0
    Juste par curiosité, j'aimerais savoir comment c'est possible. :eek:

    Car l'url rewriting permet justement de ne pas afficher les variables, donc logiquement j'aurais dit qu'il n'est pas possible d'avoir accès à une page sans l'utilisation de l'url réécrite ...
     
  4. lolo06
    lolo06 WRInaute discret
    Inscrit:
    31 Mars 2006
    Messages:
    72
    J'aime reçus:
    0
    Ben si, l'URL avec les paramètres fonctionne, il faut éviter qu'elle ait des liens (ça arrive ou arrivait qu'il y ait des liens non-réécrites sur ce forum pour les pages 2 et + des sujets). Faut peut-être aussi interdire le vrai .php (si les URLs réécrites ne le mentionnent plus) par robots.txt...
     
  5. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    du genre : je sais qu'il utilise tel script d'annuaire, alors je vais lui envoyer une requête www.example.com/index.php?do=include&url=monurl
    je sais, comme j'avais changé, sciemment les noms des scripts et des variables, j'en ai vu arriver dans mes logs de telles requêtes. :twisted:
     
  6. Helldream
    Helldream Nouveau WRInaute
    Inscrit:
    26 Avril 2007
    Messages:
    38
    J'aime reçus:
    0
    Merci de vos réponses, cependant le problème reste entier ^^.

    webmasterlamogere> Hélas, je ne peux pas faire comme cela : la structure de mon site est telle que toutes mes pages passent par un controleur unique : index.php. Il serait donc très difficile de mettre en place un contrôle php sur cette page...
    De plus, mon soucis n'est pas vraiment de faire une redirection vers les pages dont l'url a été réécrite, mais bien d'interdire l'usage de n'importe quelle url n'utilisant pad les masques définis (pour une question de sécurité entre autre).

    Pandore> Prenons mon htacces mis ci dessus. Tu peux appeler ma page présentation de plusieurs façons : http://.../presentation/ (url réécrite) ou http://.../index.php?section=presentati ... &id=&page= (url non-réécrite). Alors qu'à la 1e url, je peux définir un masque précis (par exemple que des lettres pour le choix de la section), pour le second cas, l'utilisateur est libre de mettre du javascript dans la variable section...

    lolo06> oui en effet, c'est certain qu'il faut éviter d'utiliser les url non réécrites. Mais le soucis est qu'un utilisateur peut toujours essayer de passer par dessus ton url-rewriting. Ca peut être un robot qui a trouvé un lien non réécrit, mais aussi un piratin qui veux essayer de mettre n'importe quoi comme valeur dans les variables GET, et qui aimerait bien ne pas être embêté par tes règles de réécriture ^^

    Je pensais rajouter une règle dans le fichier htaccess pour empêcher l'appel de fichiers, et l'utilisation d'url non réécrites, mais je ne sais pas trop comment faire :S

    Un truc du genre "si aucune des règles citées ne s'applique, affiche une page d'erreur quelle que soit l'url demandée"
     
  7. forummp3
    forummp3 WRInaute passionné
    Inscrit:
    8 Février 2004
    Messages:
    1 508
    J'aime reçus:
    0
    dans ton rewriting, tu rajoute &rewriting=1, si cette variable n'existe pas, ca veut dire que le rewriting n'est pas appliqué alors tu redirige vers la bonne page en rewriting.

    exemple:

    RewriteRule ^([_a-zA-Z]+)[-_/0-9a-zA-Z]*/$ /index.php?section=$1&action=index&id=&rewriting=1 [L]
     
  8. Helldream
    Helldream Nouveau WRInaute
    Inscrit:
    26 Avril 2007
    Messages:
    38
    J'aime reçus:
    0
    Héhé en effet, c'est simple et efficace ^^

    Merci à vous!
     
  9. Pandore
    Pandore WRInaute passionné
    Inscrit:
    14 Octobre 2005
    Messages:
    1 108
    J'aime reçus:
    0
    ah oui ! Effectivement, je n'avais pas pensé à ce cas particuliers ... :p

    Ben oui, ça je sais et c'est normal. Les "2" pages "existent" car l'une est définie par le .htaccess et l'autre est présente physiquement sur le serveur.

    Oui, c'est toujours le cas, je viens de vérifier. C'est surement un choix d'Olivier que de mettre uniquement que la première page des sous-forums rewritée. Car logiquement une page rewritée ne fait pas apparaitre le nom des variables utilisées :) Ce qui permet de pouvoir faire la manip décrite par Leonick plus haut par exemple :lol:
     
Chargement...
Similar Threads - [URL Rewriting] empêcher Forum Date
[URL REWRITING] Redirection 301 pages générées URL Rewriting et .htaccess 12 Novembre 2013
[URL Rewriting] chez free.fr Développement d'un site Web ou d'une appli mobile 6 Juillet 2012
[URL REWRITING] Sous domaines (Blogs) URL Rewriting et .htaccess 8 Décembre 2010
[Url Rewriting] N'aurais je rien compris à la façon de coder le htaccess ? Débuter en référencement 12 Avril 2010
[réglé][Url rewriting] Enlever les variables de sessions URL Rewriting et .htaccess 5 Mars 2009
[URL Rewriting] Supprimer automatiquer les paramètres URL Rewriting et .htaccess 27 Février 2009
[URL REWRITING] Incohérence avec le fichier index ? Débuter en référencement 25 Janvier 2009
[URL rewriting] Réécrire des pages multiples de 8 en page-1 URL Rewriting et .htaccess 6 Décembre 2008
[URL Rewriting] Réécriture en fonction de la langue URL Rewriting et .htaccess 29 Janvier 2008
[URL Rewriting] - url 404 et trait d'union Débuter en référencement 11 Octobre 2007
[URL REWRITING] Liste des séparateurs conseillés URL Rewriting et .htaccess 12 Août 2007
[Url Rewriting] Punbb URL Rewriting et .htaccess 28 Octobre 2006
[resolu] [url rewriting] un débutant qui peine... au début URL Rewriting et .htaccess 2 Août 2006
[URL Rewriting] marche seulement en local URL Rewriting et .htaccess 1 Août 2006
[URL Rewriting] utiliser une fonction PHP...mais où ? Débuter en référencement 11 Novembre 2005
[URLrewriting] J'arrive pas à trouver la bonne syntaxe !!! Débuter en référencement 5 Novembre 2005
[Url Rewriting] P'tite question URL Rewriting et .htaccess 29 Juillet 2005
[url rewriting] Dossier parent URL Rewriting et .htaccess 22 Juillet 2005
[Résolu][url_rewriting]Créer des répertoires virtuels URL Rewriting et .htaccess 23 Juin 2005
[url rewriting] Répertoires Virtuels URL Rewriting et .htaccess 17 Mai 2005