Quelles sont les failles de sécurité communes que je dois rechercher? [fermé]

14

En tant que développeur Wannabe du plug-in WP, quels sont les principaux défauts de sécurité que je devrais rechercher?

Je suis sur le point de créer un nouveau plugin avec un panneau de configuration (c'est-à-dire des champs de saisie et d'autres éléments). De quoi devrais-je m'inquiéter?

Par exemple, la désinfection des données représente-t-elle un gros problème puisqu'elle se trouve dans / wp-admin / area? Un utilisateur malveillant peut-il directement accéder à ma page de plug-in et envoyer des demandes POST ou quelque chose du genre?

Merci!

    
posée MrBatman 30.03.2011 - 18:34

3 réponses

16

Voici une liste de contrôle modifiée, basée sur la liste de contrôle de sécurité des paramètres / données actuelle (en cours de préparation) utilisée pour la révision des thèmes (les principes ne doivent pas être différents pour les plug-ins, mais pour les thèmes):

  1. Les plugins doivent préfixer toutes les options, fonctions personnalisées, variables personnalisées et constantes personnalisées avec plugin-slug.

  2. Les plug-ins doivent implémenter les pages Options du plug-in et Paramètres du plug-in délibérément, au lieu de s'appuyer sur les scripts copier-coller des didacticiels de sites Web, tels que ceux ci-dessous, obsolètes et ne comprenant pas une sécurité des données adéquate:

  3. Les plugins doivent utiliser la fonction add_options_page() pour ajouter la page des paramètres du plug-in au menu Settings , plutôt que d'utiliser add_menu_page() pour ajouter un menu de niveau supérieur.

  4. Les plug-ins doivent utiliser une fonctionnalité appropriée (par exemple, manage_options ) pour pouvoir ajouter la page de paramètres.

  5. Les plugins doivent enregistrer les options dans un seul tableau, plutôt que de créer plusieurs options pour la page de paramètres. L’utilisation de l’API des paramètres (voir ci-dessous) résoudrait ce problème.

  6. Les plugins doivent utiliser l'API Settings (voir ci-dessous) pour obtenir et enregistrer des données d'entrée de formulaire plutôt que de s'appuyer directement sur les données $_POST et $_REQUEST .

  7. Pour les cases à cocher et les options sélectionnées, les plug-ins doivent utiliser les fonctions checked() et selected() pour générer respectivement checked="checked" et selected="selected" .

  8. Les plug-ins doivent valider et assainir toutes les données non fiables avant de les entrer dans la base de données. Ils doivent également échapper à toutes les données non fiables avant d'être affichés dans les champs du formulaire Paramètres et dans les fichiers de modèle de thème:

  9. Les plugins doivent utiliser esc_attr() pour les entrées de texte et esc_html() (ou esc_textarea() dans WP 3.1) pour les zones de texte.

  10. Les plug-ins doivent explicitement fournir la vérification nonce de la page Settings, si vous n'utilisez pas l'API Settings:

  11. Il est également vivement recommandé aux plug-ins d'utiliser l'API Settings, qui est plus facile à utiliser, plus sécurisée et prend en charge une grande partie du travail acharné des pages de paramètres:

Pour un bon tutoriel sur l'utilisation de l'API de configuration, voir:

Si vous souhaitez consulter un thème avec une page de paramètres de thème sécurisée et codée de manière solide, consultez ce thème:
enlace

    
réponse donnée Chip Bennett 30.03.2011 - 20:52
11

Il y a deux aspects à cela:

  1. Principes de base.

    • Tout ce qui est écrit dans la base de données doit être vérifié pour les injections SQL.
    • Tout ce qui est imprimé à l'écran doit être vérifié pour ne pas imprimer de code JavaScript dangereux.
    • Chaque fois que quelqu'un fait quelque chose, il convient de vérifier que son intention était de le faire et qu'il dispose des capacités appropriées.
    • Il y a beaucoup d'autres choses que vous ou moi ne penserons jamais à vérifier.
  2. Détails.

    • WordPress moderne prend la sécurité au sérieux et vise à faciliter la tâche des développeurs.
    • Donc, pour la plupart des choses que vous voulez faire, il existe probablement un moyen de le faire avec les API WP.
    • Donc quoi que vous fassiez dans un premier temps, ce serait bien et étudier l'API appropriée.
    • Plus vous vous écartez des fonctionnalités simples et communes, plus vous aurez besoin d'étudier et de mettre en œuvre des éléments plus complexes.
réponse donnée Rarst 30.03.2011 - 21:04
1
  1. Ajoutez defined('ABSPATH') or die('Access denied'); au script de chaque plugin utilisé directement par wordpress
  2. Ajouter un fichier index.php vide à chaque répertoire
  3. Ajoutez .htaccess dans le répertoire du plugin avec les instructions nécessaires pour empêcher tout accès direct à certains fichiers du plugin.
réponse donnée egor 01.09.2012 - 14:35

Lire d'autres questions sur les étiquettes