Page 1 sur 2

Sécurisation de mon livre d'or avec htmlspecialchars et st

Posté : 25 août 2013, 08:15
par scoubi
Bonjour à tous,

Je vous expose mon soucis pour combiner htmlspecialchars et stripslashes, l'un étant selon mes recherches pour éviter l'insertion de code au sein d'un post sur mon livre d'or et l'autre afin de régler le soucis des accents du genre l\' et autres misères du même genre !
En premier lieu j'avais utilisé donc pour régler les accents stripslashes, avec cette prose :
 


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<head>
// (..................code .....................)
echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1'));

$nom = stripslashes ($_POST['nom']);]
ça marche très bien et je n'ai plus de soucis avec un texte devenant illisible.

J'ai donc voulu rajouter htmlspecialchars en réécrivant mon code comme ceci :
 echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1'));

$nom = htmlspecialchars(stripslashes(trim(...($_POST['nom']))));
et là c'est le drame !!!

merci par avance pour vos aides précieuses

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 12:24
par xTG
J'ai oublié ma boule de cristal donc si tu pouvais expliquer en quoi c'est le drame. :)

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 13:10
par scoubi
Bonjour,

Merci à toi de t'intéresser à mon problème, et bien je me retrouve avec une erreur de script due à cette ligne

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 15:49
par xTG
Donc c'était un copier/coller tel quel je comprends mieux...
Enlèves les trois petits points. 8-|

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 17:03
par scoubi
non ce n'est pas un copier coller,
je n'arrive pas à combiner les deux j'ai une erreur sur la ligne concernée ( Parse error: syntax error, unexpected ';' in /htdocs/livredor/writeguest.php on line 36 ),
comment combiner htmlspecialchars (pour éviter des scripts dans le message ) et conserver stripslashes ( pour éviter \' à la place des accents ) et trim pour Supprimer les espaces (ou d'autres caractères) en début et fin de chaîne ?
voici une partie de mon code afin de te prouver que ce n'est pas un copier coller !!!
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<head>

<meta name="description" CONTENT="">
<meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" >
<meta name="keywords" CONTENT="">
<head>

  <title></title>

</head>
<body>


<?php

//Ouverture du fichier en écriture

$fp = fopen("/htdocs/livredor/guestbook.txt",a);






//On convertit les caracteres html

echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1'));

$nom = stripslashes ($_POST['nom']);

$mail = stripslashes ($_POST['mail']);

$message = stripslashes ($_POST['message']);
$file = 'guestbook.txt';
je te remercie par avance de ta réponse

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 19:18
par xTG
$nom = htmlspecialchars(stripslashes($_POST['nom']));
Voilà la syntaxe que j'utiliserai. :)

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 20:02
par scoubi
Merci,

ça fonctionne parfaitement mais par contre ceci ne fonctionne plus !!!
function censorWords($find=array(),$text=null){
$replace = ' **** ';
return preg_replace($find,$replace,$text);
}

/*liste des mots a filtrer ou expression*/
$file = 'guestbook.txt';
$find = array(
);
$newmail = censorWords($find,$mail);
$newnom = censorWords($find,$nom);
$newmessage = censorWords($find,$message);
afin d'éviter des insultes, le fait d'avoir rajouter htmlspecialchars peut-il faire cela ?

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 20:42
par moogli
Modération :
Merci de faire attention à ce que l'on poste sur le forum.
Tu a un système de censure c'est bien mais ce n'est pas la peine d'étaler la liste sur le forum.
Tu peux utiliser le liste http://fr.lipsum.com pour trouver du contenu.


Montre nous le code exact et complet de la partie quid tu test et indique le départ et le résultat ce sera plus simple.


@+

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 25 août 2013, 21:54
par scoubi
Toutes mes excuses moogli,

J'ai effectivement oublié de masquer la petite bibliothèque je vais corriger cela immédiatement, je renouvelle donc mes plus plates escuses
voici mon code:

Code : Tout sélectionner

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <head> <meta name="description" CONTENT=""> <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" > <meta name="keywords" CONTENT=""> <head> <title></title> </head> <body> <?php //Ouverture du fichier en écriture $fp = fopen("/htdocs/livredor/guestbook.txt",a); //On convertit les caracteres html echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1')); $nom = htmlspecialchars(stripslashes($_POST['nom'])); $mail = htmlspecialchars(stripslashes($_POST['mail'])); $message = htmlspecialchars(stripslashes($_POST['message'])); $d = date ( "d/m/Y H:i:s" ); function censorWords($find=array(),$text=null){ $replace = ' **** '; return preg_replace($find,$replace,$text); } /*liste des mots a filtrer ou expression */ $file = 'guestbook.txt'; $find = array( '/ggggggg gg gggggg\s/i', '/ggg\s/i', '/ggggggg\s/i', '/gg ggggggg\s/i', '/ggggggggggggggggggg\s/i', ); $newmail = censorWords($find,$mail); $newnom = censorWords($find,$nom); $newmessage = censorWords($find,$message); $page = ""; $lemail = $mail; $page .= "&nbsp;<b>$nom</b> &nbsp; ($lemail)$d<br> &nbsp;le:&nbsp; $d<br>&nbsp;$message<br><hr>\n"; //On rajoute le message fwrite($fp,"$page" ,strlen("$page")); //fermeture du fichier fclose($fp); ?> <?php include("guestbook.php"); ?> </body> </html>
Je veux donc pour que mon texte soit lisible afficher à ç é à et ' et non \' donc j'ai utilisé stripslashes

Code : Tout sélectionner

//On convertit les caracteres html echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1')); $nom = stripslashes ($_POST['nom']); $mail = stripslashes ($_POST['mail']); $message = stripslashes ($_POST['message']); $d = date ( "d/m/Y H:i:s" );
ensuite j'ai intégré un module pour éviter les insultes éventuelles postées dans le livre d'or

Code : Tout sélectionner

function censorWords($find=array(),$text=null){ $replace = ' **** '; return preg_replace($find,$replace,$text); } /*liste des mots a filtrer ou expression */ $file = 'guestbook.txt'; $find = array( '/ggggggg gg gggggg\s/i', '/ggg\s/i', '/ggggggg\s/i', '/gg ggggggg\s/i', '/ggggggggggggggggggg\s/i', ); $newmail = censorWords($find,$mail); $newnom = censorWords($find,$nom); $newmessage = censorWords($find,$message);
Les deux combinés fonctionnent à merveille

En voulant optimiser la sécurité et les messages avec des scripts html... j'ai donc effectué une recherche et trouvé htmlspecialchars.

j'ai donc modifié mes déclarations nom, email, message comme ceci

Code : Tout sélectionner

echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1')); $nom = htmlspecialchars(stripslashes($_POST['nom'])); $mail = htmlspecialchars(stripslashes($_POST['mail'])); $message = htmlspecialchars(stripslashes($_POST['message']));
j'ai donc les caractères et le fait de ne plus rendre actif un script qui fonctionne, mais plus le remplacement des insultes !!!
y aurait-il une incompatibilité entre htmlspecialchars et la détection ?

Merci pour ta réponse par avance

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 26 août 2013, 07:33
par xTG
Que te donnes un var_dump() de la variable après passage dans htmlspecialchars ?

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 26 août 2013, 08:57
par scoubi
Je suis débutant et j'ai pas encore installé un système me permettant de visualiser sans envoyer sur mon ftp, j'écris dans htmledit, par ailleurs si tu connais un logiciel pour cela qui m'éviterait d'uploader sans arrêt ou une méthode !!!

si j'ai bien compris tu veux que je rajoute
var_dump($message); 
var_dump($newmessage);
dans ma page pour voir ce qu'il y a dans la variable après traitement de cette dernière ?

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 26 août 2013, 11:57
par xTG
C'est cela.

Pour ton problème de debug tu peux installer un serveur en local.
Sous windows tu as par exemple WAMP qui t'installe tous les outils nécessaires (PHP, Apache, MySQL, PhpMyAdmin, ect).

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 26 août 2013, 13:08
par scoubi
merci pour ta réponse,

je teste cela ce soir et je te dis, je vais donc rajouter en bas de mon code
echo {var_dump($newmessage));
        echo {var_dump($message));
un grand merci pour ton aide

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 26 août 2013, 15:52
par xTG
Pas de echo, var_dump est une fonction qui renvoie directement sur le buffer de sortie.
$var = 1;
echo $var;
var_dump($var);

Re: Sécurisation de mon livre d'or avec htmlspecialchars et

Posté : 26 août 2013, 16:58
par scoubi
Après l'intégration du code dans ma page, voici le résultat.

texte de test, c'est bon pour les accents, le code html affiché est pas actif mais il n'y a qu'une seule insulte j'obtient bien dans la chaine ***** mais pas la deuxième insulte donc le livre d'or affiche que l'une des deux insultes masquée
petit test pour reprendre l'encodage de la fonction htmlspecialchars combinée avec la fonction stripslashes. petit test code html <a href="#top">top</a> test des caractères spéciaux : "'"'((__àç_é&=)àç, et des insultes **** et en plus tu es un xxxxstring(288) " petit test pour reprendre l'encodage de la fonction htmlspecialchars combinée avec la fonction stripslashes. petit test code html <a href="#top">top</a> test des caractères spéciaux : "'"'((__àç_é&=)àç, et des insultes **** et en plus tu es un ( modéré par moi )"
et voici dsans le livre d'or
ddd (ddddd)
le: 26/08/2013 17:16:38
petit test pour reprendre l'encodage de la fonction htmlspecialchars combinée avec la fonction stripslashes. petit test code html <a href="#top">top</a> test des caractères spéciaux : "'"'((__àç_é&=)àç, et des insultes **** et en plus tu es un ( modéré manuellement)