htaccess : Différence entre versions

De Vulgum Techus
Aller à : Navigation, rechercher
(Page créée avec « * Créer le fichier texte '''.htaccess''' dans le répertoire à protéger * Y inclure le contenu suivant : AuthUserFile /chemin_d'accès/.htpasswd AuthName "Restrict... »)
 
(Articles Vulgum Techus)
 
(41 révisions intermédiaires par un utilisateur sont masquées)
Ligne 1 : Ligne 1 :
 +
<!-- Links checked 12/11/18 -->
 +
[[Catégorie:Linux]]
 +
[[Catégorie:Sécurité]]
 +
'''[[Lien court]]''' vers cette page : https://vt.cx/htacss
 +
'''[[QR code]]''' vers cette page : https://vt.cx/htacss.qr
 +
<html>
 +
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
 +
<!-- VT2 -->
 +
<ins class="adsbygoogle"
 +
    style="display:inline-block;width:468px;height:60px"
 +
    data-ad-client="ca-pub-3341840374417340"
 +
    data-ad-slot="6349432125"></ins>
 +
<script>
 +
(adsbygoogle = window.adsbygoogle || []).push({});
 +
</script>
 +
</html>
  
 +
= Présentation =
 +
.htaccess est un fichier stratégique dans la gestion des accès, dans la réécriture d''''[[URL]]''' (SEO) ou dans la protection d'un dossier. Il est situé à la racine d'un '''[[site]]'''
  
 +
= Redirection des erreurs  =
 +
Il est très pratique de rediriger les erreurs d'accès vers une page définie à l'avant pour éviter d'affreux messages de rejets du '''[[serveur]]'''. Pour cela utiliser la directive qui suit :
 +
Prévoir une commande ErrorDocument pour chaque numéro d'erreur traitée
 +
ErrorDocument 401 <adresse de redirection>
 +
ErrorDocument 403 <adresse de redirection>
 +
ErrorDocument 404 <adresse de redirection>
 +
ErrorDocument 500 <adresse de redirection>
 +
exemple <nowiki>ErrorDocument 404 https//monsite.com/plan_du_site</nowiki>
  
* Créer le fichier texte '''.htaccess''' dans le répertoire à protéger
+
= Protection d'un dossier par [[mot de passe]] =
 +
Pour protéger un dossier et ses sous-dossiers à l'aide d'un identifiant et d'un '''[[mot de passe]]''', .htaccess se révèle très utile. Il allie l'efficacité à la simplicité comme expliqué ici :
 +
* Créer le fichier texte .htaccess dans le répertoire à protéger
 
* Y inclure le contenu suivant :
 
* Y inclure le contenu suivant :
  AuthUserFile /chemin_d'accès/.htpasswd
+
AuthName "Restricted Area"
  AuthName "Restricted area"
+
AuthType Basic
  AuthType Basic
+
  AuthUserFile /<chemin_d'accès_absolu>/.htpasswd (exemple /var/www/vhosts/<mysite.com>/httpdocs/dev/)
  require user IDENTIFIANT
+
AuthGroupFile /dev/null
 +
require valid-user
 +
 
 +
* dans .htpasswd situé dans à l'endroit indiqué par le '''<chemin_d'accès>''' mettre le '''[[mot de passe]]''' sous la forme :
 +
<login>:<mot_de_passe_crypté>
 +
login = identifiant en clair<br/>
 +
mot_de_passe_crypté = [[mot de passe]] crypté par '''[[PHP]]''' comme expliqué plus bas
 +
 
 +
== Crypter le [[mot de passe]] par [[PHP]] ==
 +
Plusieurs méthodes sont possible pour crypter le '''[[mot de passe]]''' :<br/>
 +
'''Via un [[site]] de cryptage'''
 +
[https://tools.dynamicdrive.com/password Dynamic Drive] .htaccess Password Generator = Générateur htpasswd pour fichier .htaccess
 +
  [https://services.aideinfo.com/index.php?sub=services&script=cryptage_htpasswd Aide Info .htpasswd] Script de cryptage de mots de passe pour fichier .htpasswd
 +
'''Par [[programme]] [[PHP]]'''
 +
<?php echo crypt('<mot_de_passe'); ?>
 +
 
 +
== Connaitre le chemin absolu vers .htpasswd ==
 +
'''Sous [[Linux]]'''
 +
locate .htaccess
 +
'''Par [[programme]] [[PHP]]'''
 +
<?php echo realpath('.htpasswd'); ?>
 +
 
 +
= Bannir un site ou plusieurs référents =
 +
Les '''[[sites]] référents''' sont ceux qui envoient des connexions sur un autres sites. La plupart sont bienveillants mais d'autres le sont moins comme ceux qui :
 +
* Envoient utilisateurs non concernés ou des faux visiteurs
 +
* Utilisent des images ou du contenu en insérant leur lien sans l'accord du propriétaires des dits contenus
 +
Pour bloquer toutes les connexions issues de l'un ou de plusieurs de ces sites, htaccess est l'outil idéal comme expliqué maintenant.
 +
* Créer ou éditeur le fichier texte .htaccess à la racine du site dont on veut bloquer l'accès à un site référent
 +
* Mettre l'un des contenus suivants selon le cas de figure :
 +
# Bloquer les accès d'un site référent
 +
RewriteEngine on
 +
RewriteCond %{HTTP_REFERER} <site_à_bloquer\.TLD> [NC]
 +
RewriteRule .* - [F]
 +
 
 +
# Bloquer les accès de plusieurs sites référents
 +
RewriteEngine on
 +
RewriteCond %{HTTP_REFERER} <site_à_bloquer\.TLD> [NC,OR]
 +
RewriteCond %{HTTP_REFERER} <autre_site_à_bloquer\.TLD>
 +
RewriteCond %{HTTP_REFERER} <encore_un_autre_site_à_bloquer\.TLD>
 +
RewriteRule .* - [F]
 +
* Remplacer '''<site_à_bloquer\.TLD>, <autre_site_à_bloquer\.TLD>''' et '''<encore_un_autre_site_à_bloquer\.TLD>''' par les '''domaines''' des '''[[site]]''' à bloquer exemple : '''vilainpasbo\.net'''
 +
* <span style="color: #FF0000;">'''Attention !'''</span> Le point de l'adresse doit être précédé d'un backslash sinon il est interprété comme un joker servant à remplacer n'importe quel caractère
 +
 
 +
= Bloquer une ou plusieurs [[IP]] =
 +
Il est possible de bloque des '''[[IP]]''' précises, '''[[IP]]''' par '''[[IP]]''' ou des blocs d''''[[IP]]''' sur le 1er, 2nd ou 3e bloc comme dans l'exemple ci-dessous.
 +
  # bloque les IP 111.222.123.XXX & 211.110.127.207 & 46.183.220.150
 +
  Order Allow,Deny
 +
Allow from all
 +
Deny from 111.222.123
 +
Deny from 211.110.127.207
 +
Deny from 46.183.220.150
 +
 
 +
= Bloquer une ou plusieurs langues spécifiques =
 +
Le générateur situé au lien suivant permet de bloquer une ou plusieurs langues spécifique : http://freetools.webmasterworld.com/tools/htaccess-block-language/
 +
# Blocage du biélorusse, du russe et de l'ukrainien :
 +
RewriteEngine On
 +
RewriteCond %{HTTP:Accept-Language} (be|ru|uk)$ [NC]
 +
RewriteRule .* - [F,L]
 +
 
 +
= Supprimer ou ajouter www de l'URL =
 +
On peut souhaiter ajouter supprimer les '''www''' des '''[[URL]]''' pour permettre une uniformisation de ces dernières à savoir :
 +
Ajout de www
 +
domain.tld -> www.domain.tld
 +
www.domain.tld -> www.domain.tld
 +
 +
Suppression de www
 +
domain.tld -> domain.tld
 +
www.domain.tld -> domain.tld
 +
 
 +
Ceci avec '''mod_rewrite''' grâce au .htaccess à la base du '''[[site]]''' concerné comme expliqué ici :
 +
 
 +
== Suprimer www ==
 +
=== Méthode 1 ===
 +
Ajouter dans .htaccess
 +
RewriteEngine on
 +
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
 +
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
 +
 
 +
== Ajouter www ==
 +
=== Méthode 1 ===
 +
Ajouter dans .htaccess
 +
RewriteEngine on
 +
RewriteCond %{HTTP_HOST} ^\.(.*)$ [NC]
 +
RewriteRule ^(.*)$ http://www.%1%{REQUEST_URI} [R=301,QSA,NC,L]
 +
 
 +
= Articles externes =
 +
* [https://www.stopthehacker.com/2012/11/05/how-to-discover-and-remove-malicious-redirects-in-the-htaccess-file StopTheHackers - 05/11/12] How to discover and remove malicious redirects in the .htaccess file
 +
 
 +
= Articles [[Vulgum Techus]] =
 +
* [[Filtrer les requêtes Google Analytics pour éviter le spam]]
 +
* [[botnets]]
 +
* [[HTTP]]
 +
* [[HTTPS]]
 +
* [[expressions régulières]]
 +
 
 +
= Commentaires =
 +
{{#widget:DISQUS
 +
|id=vulgumtechus
 +
}}

Version actuelle en date du 27 mars 2019 à 19:07

Lien court vers cette page : https://vt.cx/htacss
QR code vers cette page : https://vt.cx/htacss.qr

Présentation

.htaccess est un fichier stratégique dans la gestion des accès, dans la réécriture d'URL (SEO) ou dans la protection d'un dossier. Il est situé à la racine d'un site

Redirection des erreurs

Il est très pratique de rediriger les erreurs d'accès vers une page définie à l'avant pour éviter d'affreux messages de rejets du serveur. Pour cela utiliser la directive qui suit :

Prévoir une commande ErrorDocument pour chaque numéro d'erreur traitée
ErrorDocument 401 <adresse de redirection>
ErrorDocument 403 <adresse de redirection>
ErrorDocument 404 <adresse de redirection>
ErrorDocument 500 <adresse de redirection>
exemple ErrorDocument 404 https//monsite.com/plan_du_site

Protection d'un dossier par mot de passe

Pour protéger un dossier et ses sous-dossiers à l'aide d'un identifiant et d'un mot de passe, .htaccess se révèle très utile. Il allie l'efficacité à la simplicité comme expliqué ici :

  • Créer le fichier texte .htaccess dans le répertoire à protéger
  • Y inclure le contenu suivant :
AuthName "Restricted Area" 
AuthType Basic 
AuthUserFile /<chemin_d'accès_absolu>/.htpasswd (exemple /var/www/vhosts/<mysite.com>/httpdocs/dev/)
AuthGroupFile /dev/null 
require valid-user
  • dans .htpasswd situé dans à l'endroit indiqué par le <chemin_d'accès> mettre le mot de passe sous la forme :
<login>:<mot_de_passe_crypté>

login = identifiant en clair
mot_de_passe_crypté = mot de passe crypté par PHP comme expliqué plus bas

Crypter le mot de passe par PHP

Plusieurs méthodes sont possible pour crypter le mot de passe :
Via un site de cryptage

Dynamic Drive .htaccess Password Generator = Générateur htpasswd pour fichier .htaccess
Aide Info .htpasswd Script de cryptage de mots de passe pour fichier .htpasswd

Par programme PHP

<?php echo crypt('<mot_de_passe'); ?>

Connaitre le chemin absolu vers .htpasswd

Sous Linux

locate .htaccess

Par programme PHP

<?php echo realpath('.htpasswd'); ?>

Bannir un site ou plusieurs référents

Les sites référents sont ceux qui envoient des connexions sur un autres sites. La plupart sont bienveillants mais d'autres le sont moins comme ceux qui :

  • Envoient utilisateurs non concernés ou des faux visiteurs
  • Utilisent des images ou du contenu en insérant leur lien sans l'accord du propriétaires des dits contenus

Pour bloquer toutes les connexions issues de l'un ou de plusieurs de ces sites, htaccess est l'outil idéal comme expliqué maintenant.

  • Créer ou éditeur le fichier texte .htaccess à la racine du site dont on veut bloquer l'accès à un site référent
  • Mettre l'un des contenus suivants selon le cas de figure :
# Bloquer les accès d'un site référent
RewriteEngine on
RewriteCond %{HTTP_REFERER} <site_à_bloquer\.TLD> [NC]
RewriteRule .* - [F]
# Bloquer les accès de plusieurs sites référents
RewriteEngine on
RewriteCond %{HTTP_REFERER} <site_à_bloquer\.TLD> [NC,OR]
RewriteCond %{HTTP_REFERER} <autre_site_à_bloquer\.TLD>
RewriteCond %{HTTP_REFERER} <encore_un_autre_site_à_bloquer\.TLD>
RewriteRule .* - [F]
  • Remplacer <site_à_bloquer\.TLD>, <autre_site_à_bloquer\.TLD> et <encore_un_autre_site_à_bloquer\.TLD> par les domaines des site à bloquer exemple : vilainpasbo\.net
  • Attention ! Le point de l'adresse doit être précédé d'un backslash sinon il est interprété comme un joker servant à remplacer n'importe quel caractère

Bloquer une ou plusieurs IP

Il est possible de bloque des IP précises, IP par IP ou des blocs d'IP sur le 1er, 2nd ou 3e bloc comme dans l'exemple ci-dessous.

# bloque les IP 111.222.123.XXX & 211.110.127.207 & 46.183.220.150
Order Allow,Deny
Allow from all
Deny from 111.222.123
Deny from 211.110.127.207
Deny from 46.183.220.150

Bloquer une ou plusieurs langues spécifiques

Le générateur situé au lien suivant permet de bloquer une ou plusieurs langues spécifique : http://freetools.webmasterworld.com/tools/htaccess-block-language/

# Blocage du biélorusse, du russe et de l'ukrainien :
RewriteEngine On
RewriteCond %{HTTP:Accept-Language} (be|ru|uk)$ [NC]
RewriteRule .* - [F,L]

Supprimer ou ajouter www de l'URL

On peut souhaiter ajouter supprimer les www des URL pour permettre une uniformisation de ces dernières à savoir :

Ajout de www
domain.tld -> www.domain.tld
www.domain.tld -> www.domain.tld

Suppression de www
domain.tld -> domain.tld
www.domain.tld -> domain.tld

Ceci avec mod_rewrite grâce au .htaccess à la base du site concerné comme expliqué ici :

Suprimer www

Méthode 1

Ajouter dans .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

Ajouter www

Méthode 1

Ajouter dans .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%1%{REQUEST_URI} [R=301,QSA,NC,L]

Articles externes

Articles Vulgum Techus

Commentaires

blog comments powered by Disqus