Points de base
is_email()
, username_exists()
, term_exists()
, validate_file()
, sanitize_email()
, sanitize_option()
, sanitize_text_field()
, sanitize_hex_color()
, wp_kses_post()
, esc_html()
, esc_url()
, esc_attr()
, esc_textarea()
, , ,
,et .
Cet article fait partie d'une série d'articles créés en collaboration avec Siteground. Merci de soutenir les partenaires qui ont rendu le point de point possible.
Étant donné que WordPress représente 27% de la part du réseau, la sécurité est la principale préoccupation pour toute personne exécutant un site Web sur cette plate-forme open source populaire. Bien que la sécurité du code de base WordPress soit maintenue par une équipe de développement dédiée, ce n'est pas le cas avec des milliers de plug-ins tiers et de thèmes qui étendent les capacités de WordPress pour faire presque tout ce que vous voulez. Un seul plug-in ou thème avec une vulnérabilité peut présenter un risque élevé pour des millions de sites Web.
à moins que vous n'utilisiez un fournisseur d'hébergement fiable (comme notre partenaire Siteground), qui permet aux mises à jour automatiques des plugins WordPress et des vérifications de sécurité périodiques, la sécurité des thèmes et plugins de votre site Web dépend entièrement de vous, sauf si vous utilisez un hébergement fiable Proviseur (comme notre partenaire Siteground), qui permet des mises à jour automatiques aux plugins WordPress et aux vérifications de sécurité périodiques, la sécurité des thèmes et des plugins de votre site Web est entièrement à vous.Dans cet article, je présenterai certaines directives et fonctions WordPress que vous pouvez appliquer dans le développement de thème WordPress pour vous assurer que votre produit met la sécurité des utilisateurs en premier lorsqu'il est écrit.
Principes pour les développeurs avec une forte conscience de la sécurité Pour les plugins WordPress dédiés et les développeurs de thème, la sécurité est un facteur qu'ils mettent en premier par écrit chaque ligne de code. L'approche globale de la rédaction d'un thème WordPress sûr comprend une concentration sur les principes généraux suivants:
choses à noter
Les menaces les plus courantes auxquelles vous devez prêter attention sont:
La cybersécurité s'est développée, il est donc crucial d'être conscient des dernières menaces. En ce qui concerne WordPress, les blogs Succuri sont un excellent endroit pour comprendre les vulnérabilités et les attaques.
Vérification des données, nettoyage et évasion
Avant d'accepter les données d'entrée de toute source (telles que les utilisateurs, les services réseau, les API, etc.), vous devez vérifier qu'il répond à vos attentes et est valide. Cette tâche est appelée Vérification .
Par exemple, si vous collectez des e-mails auprès d'un utilisateur via un formulaire sur un site Web, votre code doit vérifier si l'utilisateur a saisi une entrée de texte (par exemple, pas des nombres ou rien), et cette entrée correspond à une valide valide Une adresse e-mail, puis entrez les données dans la base de données.
Vous pouvez penser que ce type de chèque n'est presque pas nécessaire dans le sujet. En fait, il est préférable d'utiliser des plugins au lieu de thèmes pour inclure des formulaires. Cependant, ce n'est pas exactement le cas. Par exemple, si vous prévoyez d'ajouter des options de sujet via un personnalisateur, vous devrez peut-être effectuer une certaine validation de données sur l'entrée de l'utilisateur.
Nettoyage y compris le filtrage ou le nettoyage des données des utilisateurs, des services réseau, etc., qui seront bientôt stockés dans la base de données. Dans ce processus, vous pouvez supprimer n'importe quoi des données qui peuvent causer des dommages ou ne sont pas nécessaires, telles que des instructions JavaScript, des caractères spéciaux, etc.
Escape y compris assurer l'affichage sûr des données, tels que la suppression des caractères spéciaux, les caractères HTML codés, etc. L'approche recommandée ici est de s'échapper le plus tard possible, c'est-à-dire pour s'échapper avant que les données ne soient affichées à l'écran.
Vous devez faire beaucoup de nettoyage et échapper dans votre thème WordPress. En fait, pour des raisons de sécurité, la meilleure façon est de nettoyer / d'échapper à toutes les données dynamiques, c'est-à-dire toutes les données qui ne sont pas codées en dur dans le code source HTML.
Fonction de vérification WordPress
Vous pouvez effectuer une vérification de base en utilisant de nombreuses fonctions PHP pratiques.
Par exemple, pour vérifier si la variable n'existe pas ou si sa valeur est définie sur false , vous pouvez utiliser empty()
.
Mais pour faire de la vérification un jeu d'enfant, WordPress fournit ces fonctions utiles.
Vous pouvez utiliser la fonction is_email( $email )
pour vérifier si les données sont une adresse e-mail valide.
Exemple:
if ( is_email( 'test@domain.com' ) ) { echo '有效的电子邮件地址。'; }
Pour vérifier un nom d'utilisateur valide, WordPress fournit username_exists( $username )
:
$username = 'testuser'; if ( username_exists( $username ) ): echo "用户名已存在。"; endif;
Pour vous assurer que des balises, des catégories ou d'autres termes taxonomiques existent, vous pouvez utiliser term_exists( $term, $taxonomy = '', $parent = null )
:
// 检查类别“cats”是否存在 $term = term_exists('cats', 'category'); if ($term !== 0 && $term !== null) { echo "“cats”类别存在。"; }
Pour vous assurer que le chemin du fichier est valide (mais pas s'il existe), utilisez validate_file( $file, $allowed_files )
:
$path = 'uploads/2017/05/myfile.php'; // 返回 0(有效路径) return validate_file( $path );
Fonction de nettoyage / d'échappement WordPress
L'utilisation de la fonction WordPress intégrée pour nettoyer et échapper aux données est le moyen le plus rapide et le plus sûr de le faire, alors faites-en votre premier choix.
Voici quelques fonctions que j'utilise souvent lors du développement de thèmes WordPress.
sanitize_email( $email )
Supprimer tous les caractères qui ne sont pas autorisés dans une adresse e-mail valide. Voici un exemple d'une entrée du codex:
$sanitized_email = sanitize_email(' admin@example.com! '); // 将输出:admin@example.com echo $sanitized_email;
sanitize_option( $option, $value )
Nettoyez les valeurs des options en fonction de la nature des options, telles que les valeurs des entrées de personnalisation. Voici un exemple:
sanitize_option( 'admin_email', 'admin@test.com!' );
sanitize_text_field( $str )
Nettoyer les chaînes fournies par les utilisateurs ou les bases de données, mais vous pouvez l'utiliser pour nettoyer toutes les données que vous souhaitez être tout simplement texte:
// 输出:标题 echo sanitize_text_field('<h1>标题</h1>');
sanitize_hex_color( $color )
et sanitize_hex_color_no_hash( $color )
fonctionnent dans le contexte d'un personnalisateur WordPress.
Vos thèmes sont très pratiques lorsqu'ils permettent aux utilisateurs de choisir des couleurs pour divers éléments du site Web.
La première fonction vérifie la saisie de couleur hexadécimale préfixée avec le symbole #, tandis que la deuxième fonction gère les données de couleur sans #.
Exemple de WordPress.org Référence du code:
$wp_customize->add_setting( 'accent_color', array( 'default' => '#f72525', 'sanitize_callback' => 'sanitize_hex_color', ) );
wp_kses_post( $data )
Le contenu du filtre, ne laissant que les balises HTML. Dans un contexte de personnalisation, cela est très utile lorsque votre sujet permet aux utilisateurs de saisir du texte avec le format HTML:
function yourtheme_sanitize_html( $input ) { return wp_kses_post( force_balance_tags( $input ) ); }
esc_html( $text )
est un moyen simple d'échapper aux blocs HTML. Par exemple, si vous souhaitez sortir du texte dans une balise HTML pour vous assurer que ce texte lui-même ne contient pas de balises HTML ou d'autres caractères non valides, vous pouvez écrire:
<h2><?php echo esc_html( $title ); ?></h2>
esc_url( $url )
est utile lorsque vous souhaitez vérifier et nettoyer les URL, y compris les URL dans les propriétés HREF et SRC. Par exemple:
<a href="https://www.php.cn/link/9e52112668804599bae71e241e4b4548'https://website.com' ); ?>">很棒的网站</a>
esc_attr( $text )
n'importe où pour les attributs HTML de sortie dynamique pour votre thème:
<a href="https://www.php.cn/link/1649f854581e9c03bc2c4e06023c5b99'/' ) ); ?>" rel="home"></a>
Vous pouvez utiliser esc_textarea( $text )
pour échapper au texte que l'utilisateur a tapé dans la zone de texte:
<textarea><?php echo esc_textarea( $text ); ?></textarea>
Ressources
Les grandes ressources suivantes sont très utiles pour que je puisse vraiment arriver au point d'écriture du code de sécurité dans les thèmes WordPress:
ou, vous pouvez apprendre comment les fournisseurs d'hébergement peuvent aider avec la sécurité WordPress dans cette comparaison pratique que nous avons organisée pour vous.
Si vous êtes intéressé par le développement du thème lui-même, vous pouvez apprendre à créer un thème de base à partir de zéro en apprenant dans le cours "Build Your First WordPress" de SitePoint: Chargement du lecteur ...
Conclusion
La sécurité doit être en tête de tous les développeurs WordPress. WordPress vous donne un bon début en offrant un grand nombre de fonctions prêtes à l'emploi que vous pouvez insérer dans votre thème.
Ainsi, l'utilisation de WordPress pour valider et nettoyer / échapper aux fonctions est la façon la plus simple que vous puissiez commencer à écrire un thème WordPress sûr et fiable (les utilisateurs apprendront à faire confiance).
Combien considérez-vous la sécurité lors de la rédaction d'un thème ou d'un plugin WordPress? Comment résolvez-vous les problèmes de sécurité?
Cliquez sur la zone de commentaire ci-dessous pour partager!
FAQ sur les fonctions de validation du thème et d'échappement WordPress
La norme de codage WordPress est un ensemble de règles et de directives spécifiques formulées par WordPress pour assurer la cohérence et la qualité du code WordPress. Ces normes sont importantes car elles rendent le code plus facile à lire, à comprendre et à maintenir. Ils aident également à prévenir les erreurs de codage courantes et les vulnérabilités de sécurité. Pour les développeurs, il est essentiel de suivre ces normes pour s'assurer que leurs thèmes et plugins sont compatibles avec WordPress et d'autres thèmes et plugins.
L'édition du code WordPress peut être dangereuse si elle n'est pas effectuée correctement. Il est recommandé d'utiliser des sous-thèmes lors de la modification du code de thème. De cette façon, vous pouvez apporter des modifications sans affecter le thème d'origine. Assurez-vous également de sauvegarder votre site Web avant d'apporter des modifications. Utilisez l'éditeur de code approprié au lieu de l'éditeur WordPress pour modifier le code. Enfin, testez vos modifications sur le site de mise en scène avant de les appliquer sur votre site en direct.
Dans l'analyse qualitative, le code est utilisé pour étiqueter, compiler et organiser vos données, tandis que des sujets sont utilisés pour identifier les modèles et les relations dans les données. Le code est généralement un seul mot ou une phrase qui représente un élément de données spécifique. D'un autre côté, le sujet est plus large, représentant un concept ou une idée plus large qui émerge des données codées.
Le codage du thème est une méthode utilisée dans la recherche qualitative pour identifier et analyser des modèles ou des sujets dans les données. Dans WordPress, le codage du thème peut se référer au processus de développement d'un thème avec une conception ou une fonction spécifique. Cela implique l'écriture et l'organisation du code d'une manière qui reflète la conception ou la fonction prévue du sujet.
Les fonctions de vérification et d'échappement sont des mesures de sécurité dans WordPress. La vérification est un processus de vérification des données saisies par l'utilisateur pour s'assurer qu'elle remplit certaines conditions avant le traitement. Escape est un processus pour garantir que la sortie est sécurisée en supprimant des données nocives qui peuvent provoquer des vulnérabilités de sécurité. Ces fonctions sont essentielles pour empêcher les problèmes de sécurité tels que l'injection de SQL et les scripts croisés (XSS).
Les données de vérification et d'échappement sont très importantes pour assurer la sécurité de votre site Web WordPress. Sans ces processus, votre site Web pourrait être attaqué et un attaquant pourrait injecter des données nocives sur votre site Web, entraînant une perte de données potentielle ou un accès non autorisé à votre site Web.
WordPress fournit quelques fonctions pour valider et échapper aux données. Par exemple, vous pouvez vérifier l'entrée de texte à l'aide de la fonction sanitize_text_field()
et échapper à la sortie HTML à l'aide de la fonction esc_html()
. Assurez-vous d'utiliser ces fonctions lors du traitement de l'entrée de l'utilisateur ou de la sortie des données au navigateur.
Certaines meilleures pratiques pour écrire du code WordPress sécurisé incluent les normes de codage WordPress suivantes, la validation et l'échappement de toutes les données, en utilisant NONCE pour vérifier la source des demandes, la vérification des autorisations des utilisateurs avant d'effectuer une action et de garder WordPress, les thèmes et les plugins jusqu'à date.
Le manuel du développeur WordPress est une excellente ressource pour apprendre les normes de codage WordPress. Il fournit des explications détaillées et des exemples des normes. Il existe également de nombreux tutoriels et cours en ligne qui couvrent les normes de codage WordPress.
Certaines erreurs courantes qui doivent être évitées lors du codage WordPress incluent le fait de ne pas suivre les normes de codage WordPress, de ne pas vérifier ou d'échapper aux données, d'URL codées durs, de ne pas utiliser nonce pour les soumissions de formulaires, et de ne pas garder WordPress, thèmes et plugins à jour à jour .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!