Cette chose rend mon codage difficile. Le codex Wordpress motive l'utilisation de esc_url en parlant vaguement de sécurité. Mais vaut-il vraiment la peine?
Par exemple, quel est l'avantage de sécurité important et pratique que vous
<?php echo esc_url( home_url( '/' ) ); ?>
au lieu de
<?php echo home_url() ?>
PS: Je ne parle pas de développement de thème, mais d'un site spécifique.
home_url()
, si elles sont utilisées dans leur contexte approprié. Selon cette recommandation, je m'attendaishome_url
à effectuer sa propre désinfection.eh bien, toutes les entrées utilisateur doivent être nettoyées ... Si l'url que vous injectez n'est pas entrée par l'utilisateur (par exemple, la configuration du site par une personne de confiance, des valeurs codées en dur), vous pouvez vous soulager de l'esc-url.
mais si je pouvais injecter cette URL sur votre site, je pourrais facilement injecter du code js, ou du code de redirection ... ou même du code côté serveur dans certaines situations.
cela peut entraîner le détournement de session et le vol de vos comptes d'utilisateurs et d'autres mauvaises options.
Éditer:
Dans votre exemple,
esc_url( home_url( '/' ) );
il fonctionnait sur une valeur semi-codée en dur!
esc_url
peut donc être éliminé.Cela dit, je ne vois toujours pas pourquoi se soucier des distinctions entre quand il y a une menace et quand il n'y en a pas et suggérerais généralement de garder esc_url () pour chaque valeur.
la source
Vous devez également garder à l'esprit
esc_url()
quelque chose comme<a href="SANITIZE_THIS_URL">your_text</a>
.si vous allez utiliser l'URL dans votre sortie HTML, comme un attribut href pour un lien ou un attribut src pour un élément image, vous devez utiliseresc_url()
.esc_url_raw()
est pour d'autres cas où vous voulez une URL propre, mais vous ne voulez pas que les entités HTML soient encodées. Donc, toute utilisation non HTML (DB, redirection) utiliserait cela.La
esc_url_raw()
fonction fera à peu près la même chose queesc_url()
, mais elle ne décodera pas les entités, ce qui signifie qu'elle ne remplacera pas & par & # 038 et ainsi de suite. Comme Mark l'a souligné, il est sûr d'utiliseresc_url_raw()
dans les requêtes de base de données, les redirections et les fonctions HTTP, telles que `wp_remote_get () 'pour plus d'informations sur esc_url_raw ()la source
esc_url est utilisé pour produire un code HTML valide (pas pour filtrer l'entrée). Vous devez l'utiliser à chaque fois que vous n'êtes pas sûr à 100% que ce que vous souhaitez générer est un code HTML valide pour ce contexte.
la source