[RESOLU] htmlspecialchars !!!!

Eléphant du PHP | 88 Messages

27 janv. 2021, 20:45

bonjour !

Alors voilà !! peut être que ma question va piquer certain !! tant pis !! en rpincipe : pas de question bete!!!
j'ai cherché les infos pour htmlspecialchars ! ok c'est pas sorcier de comprendre que ca transforme : Manuel PHP:
htmlspecialchars — Convertit les caractères spéciaux en entités HTML
Mais après ! je ne trouve que des echo et htmlspecialchars!!!
moi mes seuls echo ne sont que des messages d'infos qui n'interesseraient meme pas le plus nul des pirates :lol: :P

En revanche securiser mes form là oui je comprendrai !
donc moi j'ai fait un function (pour raccourcir) :
<?php
function[color=#FF0080] e[/color](string $string)
{
    return htmlentities($string);
}
mais je suis tjs en MVC orienté POO donc je mets mon e ou ? devant mes input? franchement
je suis sure que cette question pourra aider des autres debutants!

merci pour vos retours

++
=D>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 janv. 2021, 14:03

Hello !

Il n'y a généralement d'intérêt à convertir des caractères spéciaux en entités HTML que quand tu veux utiliser cette chaine de caractères dans ton code et qu'elle se retrouve au milieu d'une page en html (notamment pour apparaitre à l'écran). Cela permet d'éviter que son contenu ne viennent altérer le reste de ta page.

Par exemple, si dans un formulaire je rentre - pour une raison ou une autre - la valeur ; "toi" & "moi", tu peux enregistrer cette valeur en base sans problème. Par contre pour la modifier, un simple <input type="text" value="<?php echo $valeur; ?>" /> aura pour effet de générer le code html suivant :
<input type="text" value=""toi" & "moi"" />. L'attribut value de l'input sera vide et le reste sera ignoré, le champ semblera vide à l'écran. Avec htmlspecialchars($valeur), le résultat dans le code serait <input type="text" value="&quot;toi&quot; &amp; &quot;moi&quot;" />. L'attribut value est correctement renseigné, le texte apparait bien dans le champ et est facile à modifier.

Cela permet donc d'éviter des conflits entre ton code et des valeurs que tu ne maîtrises pas (notamment si l'utilisateur commence à inclure des balises html qui sont restituées en l'état dans ton code, c'est la porte ouverte aux injections XSS et autres failles de sécurité).

On pourrait aussi le faire au moment de l'insertion en base, la chaine étant sécurisée une fois pour toute, mais tout va dépendre de l'usage que tu en auras. Si tu veux l'utiliser dans un PDF plutôt qu'une page html, il faudra retransformer la chaine. De même si tu veux pouvoir la modifier (parce qu'éditer un champ contenant &quot;toi&quot; &amp; &quot;moi&quot; est plus compliqué que de modifier un champ avec marqué "toi" & "moi" ;))

C'est donc essentiellement à l'exécution / l'affichage que l'on utilise cette fonction :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 88 Messages

28 janv. 2021, 18:04

Merci Ryle !!! au moins tes explications sont claires !! un vrai plaisir d'apprendre !!
ok j'ai pris acte de tout cela