[Wordpress] Quelques optimisations

On en découvre tous les jours sur Wordpress ! Au menu aujourd’hui :

  • Plus de sécurité.
  • De la compression GZIP pour économiser de la BP ou accélérer un peu le chargement.
  • De l’optimisation pour les fichiers en cache.
  • Encore plus de sécurité.

Plus de sécurité.

Nous allons empêcher la modification, depuis le web, des fichiers .htaccess et wp-config.php``` #secure .htaccess <Files .htaccess> Order Allow,Deny Deny from all

#secure wp-config.php Order Deny,Allow Deny from all


De la compression GZIP
======================

Créer un fichier **gzip.php** avec pour contenu :```
<?php
	if( isset( $\_SERVER\['HTTP\_ACCEPT\_ENCODING'\] ) && substr\_count( $\_SERVER\['HTTP\_ACCEPT\_ENCODING'\], 'gzip' ) && !preg\_match( '/(load-styles|load-scripts)\\.php/', $\_SERVER\[ 'SCRIPT\_NAME' \] ) )
		ob\_start( 'ob\_gzhandler' );
	else
		ob\_start();
?>

```Dans le fichier **.htaccess** :```
<FilesMatch "\\.js$">
AddHandler application/x-httpd-php .js
php\_value default\_mimetype "text/javascript"
</FilesMatch>
<FilesMatch "\\.css$">
AddHandler application/x-httpd-php .css
php\_value default\_mimetype "text/css"
</FilesMatch>
<FilesMatch "\\.(htm|html|shtml)$">
AddHandler application/x-httpd-php .html
php\_value default\_mimetype "text/html"
</FilesMatch>
php\_value auto\_prepend\_file /absolute/path/to/gzip.php

Optimisation de la mise en cache des fichiers

Cela se passe toujours dans le fichier .htaccess :``` ExpiresActive On ExpiresDefault A0 <FilesMatch “\.(gif|jpg|jpeg|png|swf)$">

2 weeks

ExpiresDefault A1209600 Header append Cache-Control “public” <FilesMatch “\.(xml|txt|html)$">

2 hours

ExpiresDefault A7200 Header append Cache-Control “proxy-revalidate” <FilesMatch “\.(js|css)$">

3 days

ExpiresDefault A259200 Header append Cache-Control “proxy-revalidate”


Encore plus de sécurité
=======================

Et toujours dans le fichier **.htaccess** :-)```
\# La base
ServerSignature Off
Options All -Indexes
Options +FollowSymLinks

# Filtrer certains types de requêtes.
<IfModule mod\_rewrite.c>
 RewriteCond %{REQUEST\_METHOD} ^(TRACE|DELETE|TRACK) \[NC\]
 RewriteRule ^(.\*)$ - \[F,L\]
</IfModule>

# QUERY STRING EXPLOITS
<IfModule mod\_rewrite.c>
 RewriteCond %{QUERY\_STRING} \\.\\.\\/    \[NC,OR\]
 RewriteCond %{QUERY\_STRING} boot\\.ini \[NC,OR\]
 RewriteCond %{QUERY\_STRING} tag\\=     \[NC,OR\]
 RewriteCond %{QUERY\_STRING} ftp\\:     \[NC,OR\]
 RewriteCond %{QUERY\_STRING} http\\:    \[NC,OR\]
 RewriteCond %{QUERY\_STRING} https\\:   \[NC,OR\]
 RewriteCond %{QUERY\_STRING} mosConfig \[NC,OR\]
# RewriteCond %{QUERY\_STRING} ^.\*(\\\[|\\\]|\\(|\\)|<|>|'|"|;|\\?|\\\*).\* \[NC,OR\]
# RewriteCond %{QUERY\_STRING} ^.\*(%22|%27|%3C|%3E|%5C|%7B|%7C).\* \[NC,OR\]
 RewriteCond %{QUERY\_STRING} ^.\*(%0|%A|%B|%C|%D|%E|%F|127\\.0).\* \[NC,OR\]
 RewriteCond %{QUERY\_STRING} ^.\*(globals|encode|localhost|loopback).\* \[NC,OR\]
 RewriteCond %{QUERY\_STRING} ^.\*(request|select|insert|union|declare|drop).\* \[NC\]
 RewriteRule ^(.\*)$ - \[F,L\]
</IfModule>

# CHARACTER STRINGS
<IfModule mod\_alias.c>
 # BASIC CHARACTERS
 RedirectMatch 403 \\,
 RedirectMatch 403 \\:
 RedirectMatch 403 \\;
# RedirectMatch 403 \\=
 RedirectMatch 403 \\@
 RedirectMatch 403 \\\[
 RedirectMatch 403 \\\]
 RedirectMatch 403 \\^
 RedirectMatch 403 \\\`
 RedirectMatch 403 \\{
 RedirectMatch 403 \\}
 RedirectMatch 403 \\~
 RedirectMatch 403 \\"
 RedirectMatch 403 \\$
 RedirectMatch 403 \\<
 RedirectMatch 403 \\>
 RedirectMatch 403 \\|
 RedirectMatch 403 \\.\\.
# RedirectMatch 403 \\/\\/
 RedirectMatch 403 \\%0
 RedirectMatch 403 \\%A
 RedirectMatch 403 \\%B
 RedirectMatch 403 \\%C
 RedirectMatch 403 \\%D
 RedirectMatch 403 \\%E
 RedirectMatch 403 \\%F
 RedirectMatch 403 \\%22
 RedirectMatch 403 \\%27
 RedirectMatch 403 \\%28
 RedirectMatch 403 \\%29
 RedirectMatch 403 \\%3C
 RedirectMatch 403 \\%3E
# RedirectMatch 403 \\%3F
 RedirectMatch 403 \\%5B
 RedirectMatch 403 \\%5C
 RedirectMatch 403 \\%5D
 RedirectMatch 403 \\%7B
 RedirectMatch 403 \\%7C
 RedirectMatch 403 \\%7D
 # COMMON PATTERNS
 Redirectmatch 403 \\\_vpi
 RedirectMatch 403 \\.inc
 Redirectmatch 403 xAou6
 Redirectmatch 403 db\\\_name
 Redirectmatch 403 select\\(
 Redirectmatch 403 convert\\(
 Redirectmatch 403 \\/query\\/
 RedirectMatch 403 ImpEvData
 Redirectmatch 403 \\.XMLHTTP
 Redirectmatch 403 proxydeny
 RedirectMatch 403 function\\.
 Redirectmatch 403 remoteFile
 Redirectmatch 403 servername
 Redirectmatch 403 \\&rptmode\\=
 Redirectmatch 403 sys\\\_cpanel
 RedirectMatch 403 db\\\_connect
 RedirectMatch 403 doeditconfig
 RedirectMatch 403 check\\\_proxy
 Redirectmatch 403 system\\\_user
 Redirectmatch 403 \\/\\(null\\)\\/
 Redirectmatch 403 clientrequest
 Redirectmatch 403 option\\\_value
 RedirectMatch 403 ref\\.outcontrol
 # SPECIFIC EXPLOITS
 RedirectMatch 403 errors\\.
# RedirectMatch 403 config\\.
 RedirectMatch 403 include\\.
 RedirectMatch 403 display\\.
 RedirectMatch 403 register\\.
 Redirectmatch 403 password\\.
 RedirectMatch 403 maincore\\.
 RedirectMatch 403 authorize\\.
 Redirectmatch 403 macromates\\.
 RedirectMatch 403 head\\\_auth\\.
 RedirectMatch 403 submit\\\_links\\.
 RedirectMatch 403 change\\\_action\\.
 Redirectmatch 403 com\\\_facileforms\\/
 RedirectMatch 403 admin\\\_db\\\_utilities\\.
 RedirectMatch 403 admin\\.webring\\.docs\\.
 Redirectmatch 403 Table\\/Latest\\/index\\.
</IfModule>

```Les règles commentées le sont car elles interfèrent avec Wordpress. Si vous constatez d'autres problèmes avec ces règles il vous suffit aussi de commenter. A savoir que cet article est une **traduction/adaptation d'une partie de l'article** : [20 Steps to a Flexible and Secure WordPress Installation](http://net.tutsplus.com/tutorials/wordpress/20-steps-to-a-flexible-and-secure-wordpress-installation/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+nettuts+(NETTUTS)&utm_content=Google+Reader)
---
### Comments:
#### 
[Agence wordpress](http://www.hangar17.com "[email protected]") - <time datetime="2010-07-29 06:00:32">Jul 4, 2010</time>

Merci bien pour toutes ces astuces !
<hr />
#### 
[ailatane](http://csaintma.free.fr/wordpress "[email protected]") - <time datetime="2010-08-02 09:22:05">Aug 1, 2010</time>

Bonjour ! la petite question du jour : ces optimisations sont-elles valables aussi si on est en hébergement mutualisé ? je suis chez Free, et j'hésite à bidouiller le htaccess ! Merci d'avance pour ta réponse !
<hr />
#### 
[Jérémy Wanderscheid](http://chezwanders.info "[email protected]") - <time datetime="2010-08-25 23:33:57">Aug 3, 2010</time>

> [**_ailatane:_**](#comment-4233)
> 
> Bonjour !  
> la petite question du jour : ces optimisations sont-elles valables aussi si on est en hébergement mutualisé ?  
> je suis chez Free, et j’hésite à bidouiller le htaccess !  
> Merci d’avance pour ta réponse !

Une partie des optimisations ne seront pas valable en mutualisé car a moins de connaitre ce qui est réellement en prod sur les serveurs mutualisé tu ne maitrisera pas le contexte.
<hr />
#### 
[ailatane](http://csaintma.free.fr/wordpress "[email protected]") - <time datetime="2010-09-03 12:33:40">Sep 5, 2010</time>

Bon, tant pis ! Merci pour ta réponse en tout cas !
<hr />
updatedupdated2024-06-012024-06-01