web-dev-qa-db-fra.com

ajout de règles de réécriture dans .htaccess

Je lisais cette réponse , et j'ai essayé d'utiliser son guide pour masquer la page de connexion . Il est suggéré d’éditer le fichier .htaccess de mon site Web comme suit:

RewriteEngine On
RewriteBase / 
##### ABOVE THIS POINT IS ALREADY INSERTED BY Word PRESS
##### Michi’s code is BELOW #####
RewriteCond %{REQUEST_URI} wp-admin/
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule .*\.php [F,L]
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule ^ADMINFOLDER/(.*) wp-admin/$1?%{QUERY_STRING}&YOURSECRETWORDHERE [L]
##### Michi’s code is ABOVE #####
##### BELOW THIS POINT IS ALREADY INSERTED BY Word PRESS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Mon fichier .htaccess commence par ces lignes:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Je veux savoir si j'ajoute quelque chose entre # BEGIN WordPress et # END WordPress, est-il possible qu'il soit écrasé par wordpress ou non? Ceci est habituel pour les scripts automatisés, mais comme aucun avertissement n’est mentionné, je veux savoir si l’on peut ajouter quelques règles à l’intérieur de ce bloc.

4
VSB

Wordpress utilise ces marqueurs pour mettre ses règles entre. Je n'ai jamais et ne mettrais jamais de règles personnalisées.

Consultez insert_with_markers() et save_mod_rewrite_rules() dans wp-admin/includes/misc.php

Plus particulièrement, ce bloc de commentaires qui répond à votre question:

/**
 * Inserts an array of strings into a file (.htaccess ), placing it between
 * BEGIN and END markers.
 *
 * Replaces existing marked info. Retains surrounding
 * data. Creates file if none exists.
 */
5
David Sword

A part: Le code de Michi n'est pas tout à fait correct, et peut-être pas aussi sécurisé que vous pourriez le penser ...

##### Michi’s code is BELOW #####
RewriteCond %{REQUEST_URI} wp-admin/
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule .*\.php [F,L]
RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule ^ADMINFOLDER/(.*) wp-admin/$1?%{QUERY_STRING}&YOURSECRETWORDHERE [L]
##### Michi’s code is ABOVE #####

La première variable RewriteRule manque d'un argument substitution . Cela entraînera une réécriture (incorrecte) de la demande en /[F,L], ce qui entraînera un 404. Ok, l'accès est donc essentiellement bloqué, mais l'intention est de servir un 403 Forbidden (ce à quoi sert l'indicateur F). Donc, ce qui suit:

RewriteRule .*\.php [F,L]

Devrait être réécrit comme:

RewriteRule \.php$ - [F]

Notez l'utilisation du trait d'union (-) pour le deuxième argument. Cela ressemble à une omission accidentelle dans le code d'origine. De même, pas besoin de l'indicateur L lorsque l'indicateur F est utilisé.


RewriteCond %{QUERY_STRING} !YOURSECRETWORDHERE
RewriteRule ^ADMINFOLDER/(.*) wp-admin/$1?%{QUERY_STRING}&YOURSECRETWORDHERE [L]

Cette deuxième règle vous permet d’obtenir un accès si vous connaissez la variable ADMINFOLDER. La YOURSECRETWORDHERE est essentiellement ignorée (et non requise par l'utilisateur final) !? Donc, la ADMINFOLDER est vraiment le "secret" qui devrait être long et cryptique. (TBH, il n'y a pas besoin de 2 "secrets" ici, quand on fera l'affaire.)


Toute directive de blocage comme celle-ci devrait aller before le contrôleur frontal WordPress. (Bien que si vous ne bloquez que des fichiers physiques, cela n'a pas vraiment d'importance si vous voulez être fonctionnel, puisque le contrôleur frontal WP n'achemine que les chemins d'URL qui ne correspondent pas aux fichiers/répertoires physiques.)

1
MrWhite

Ceci est habituel à propos des scripts automatisés

Exactement. Lorsque wordpress aura besoin de régénérer la règle htaccess, il lira le fichier actuel et remplacera la section "wordpress". Si vous avez besoin de règles dans cette section, vous pouvez écrire un plug-in pour remplacer/modifier les règles générées.

Notes de côté: l'obscurité n'est pas la sécurité, la force brute n'est pas la façon dont les sites sont piratés, et vous devrez désactiver xml-rpc, et peut-être plus tard l'api-rest.

0
Mark Kaplun