erreur avec htmlentities

Répondre
chris88
le 04/01/2015 à 11:32
chris88
Bonjour,
Je n'arrive pas a mettre le htmlentities sur mon script!
j'ai essayé comme cela pour m'afficher du texte de ma base de données et cela ne me l'affiche pas!

echo nl2br(htmlentities($val['texte']));


et quand je le mets comme cela , pas de soucis, sauf qu'il n'est pas avec htmlentities !

echo' Commentaire : ';echo nl2br($val['texte'])."<br><br>";

merci a vous, c'est suite a un piratage que l'on m'a dit de mettre des htmlentities et j'y connais rien
alexjx
le 06/02/2015 à 18:26
alexjx
Bonjour,

echo nl2br(htmlentities($val['texte']));

doit fonctionner.
J'ai moi-même fait le test avec une variable que j'appelle $variable
(au lieu de $val['texte'] mais c'est pareil, tu appelles ta variable comme tu veux).

nl2br(htmlentities($variable));

donne le même rendu à l'écran que:
nl2br($variable);

(si bien sûr tu n'as pas d'injection xss dans un script côté serveur)
à la grande différence, bien sûr, que ta première ligne est protégée contre
les injections xss et l'autre non, chose que tu ne vois pas à l'oeil nu.

Donc si ça doit fonctionner, à moins que ton affichage se fasse à l'intérieur d'un
input (dans ce cas oui htmlentities risque de ne pas fonctionner).
Si c'est le cas, pourquoi ne pas utiliser à la place des expressions régulières
qui font barrage aux 2 chevrons, au et commercial, aux guillemets simples et
aux guillemets doubles (pour reprendre les caractères couverts par htmlspecialchars,
sachant que ce dernier est suffisant, tu n'as pas besoin d'aller jusqu'à utiliser htmlentities
pour te protéger des injections xss).

Maintenant, si tout ça c'est nouveau pour toi, renseigne-toi (par internet par exemple,
tu y trouves de nombreux tutos et messages d'autres utilisateurs) déjà sur
ce qu'on appelle injections xss et injections sql.
A mon avis ça c'est le début pour prendre les choses par le bon bout.
Quand tu parles de htmlentities c'est pour te protéger des injections xss.
Il s'agit en gros d'un script javascript malveillant qui reste dans ta bdd jusqu'à
ce que son contenu soit appelé pour être affiché à l'écran, et l'utilisateur peut être par
exemple redirigé vers un site "pas très fréquentable".
mais il faut savoir qu'il existe aussi des injections sql (tu connais peut-être mysqli_real_escape_string qui sert à s'en prémunir) bien plus dangereuses encore puisqu'elles attaquent le contenu de ta bdd.
Je pense qu'il faut déjà que tu regardes ici et là pour différencier ces deux types d'attaques, et voir comment s'en prémunir.

Tu remarqueras aussi que tu as un point-virgule en trop au début
de la deuxième ligne que tu as écrit.
fafah12
le 09/02/2015 à 08:03
fafah12
Et puis fait attention de ne pas choisir une appellation de variable déjà utilisée par le logiciel comme case, function…c’est un conseil d’un pro en script http://l4.yt/agenceweb
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours