Mesures de protection pour protéger son plugin WordPress

1 – Empêcher l’accès direct à vos fichiers

La plupart des hébergeurs permettent l’accès direct aux fichiers sur votre serveur.
Lorsqu’on accède directement aux fichiers PHP d’un plugin, cela va surement afficher une erreur mais risque de divulguer malgré tous des informations aux hackers.

Pour éviter l’affichage des erreurs, vous pouvez ajouter le contrôle d’une constante au début du fichier PHP.

[php]
if ( ! defined( ‘ABSPATH’ ) ) {
exit; // don’t access directly
};
[/php]

2. Sanitize toutes les variables GET, POST, REQUEST

Ne jamais faire confiance à une variable entrée par l’utilisateur ou le navigateur et même envoyé depuis l’administration.

Sinon vous serez vulnérable ou attaques XSS. Des scripts Javascript seront injectés dans votre code et exécuteront du code malveillant (popup, modification des liens etc..)

Il faut toujours utiliser les fonctions « sanitize » de WordPress pour nettoyer les variables de possibles codes dangereux. Exemple de fonction : sanitize_text_field

De plus, il est recommandé de vérifier et valider que les valeurs reçues sont des valeurs conformes avant de les utiliser dans votre code. Des fonctions sont également disponibles sur WordPress.

3. Échapper (Escape en anglais) quand vous diffusez des données provenant de vos tables

Lorsque vous affichez des données provenant de vos tables (BDD MySQL par exmeple), il est aussi résonnable de nettoyer vos données, car les utilisateurs ont très bien pu écrire du code malveillant dans un champs texte. Worpdress fournies également quelques fonctions pour nous aider :

  • wp_kses et wp_kses_post which strip out untrusted HTML.
  • esc_js which escapes and correctly encodes characters in text strings which you intend to echo for JavaScript.
  • esc_textarea which encodes text for use inside textarea elements.
  • esc_url which correctly encodes URLs and rejects invalid URLs.
  • esc_html which encodes < > & " ' when outputting HTML.
  • esc_attr which encodes text like esc_html for use in HTML attributes.

Par exemple si votre plugin génére et affiche du code HTML il est recommandé d’échapper les liens comme ceci :

[php]<a href=”<?php echo esc_url( $url ); ?>”><?php echo esc_html( $text ); ?></a>[/php]

C’est très simple à coder mais il faut penser à le faire partout.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


Time limit is exhausted. Please reload CAPTCHA.