Je viens de lire la nouvelle sur la non sécurité de REMOTE_ADDR, je suis allé sur les cours php, et sur "Afficher le nombre de connectés sur un site", tu n'as pas proposé de modification ?
Il n'y a pas plus de parade sur le site d'où est issue la nouvelle.
Alors, que peut-on faire pour sécuriser ce REMOTE_ADDR ?
Les comment faire ne sont pas du tout sécurisés (je ne sais pas combien de fois j'ai du le répéter çà).
Ils sont juste là pour vous fournir un squelette de programmation.
Sinon, pour l'exemple de ce blog, la solution est simple : htmlentities.
J'ai essayé de placer le "HTMLENTITIE" et le "ENT_QUOTES". Le problème est que maintenant, pour afficher le nombre connecté, il me faut rafraichir la page…
J'ai du faire une erreur mais où ?
Mon code :
<?php
$conn=db_connect();
$result=$conn->query('SELECT count(*) FROM visiteurs_online');
$data=mysqli_fetch_array($result);
echo'<br />';
echo'<p class="connexion">Actuellement <strong>',$data[0],' </strong> visiteur(s) sur le site. </p>';
Ensuite, pour tes requêtes SQL, il manque une fonction qui permet de te protéger contre les injections SQL.
Je ne sais pas ce que tu utilises comme base SQL (non plus quelle classe PHP tu utilises), mais la fonction à utiliser pour du MySQL, c'est mysql_escape_string (surement que ta classe a sa propre méthode d'escape, regarde la doc de ta classe).
Ben si ça fonctionne sans erreur (je n'ai pas testé), c'est que c'est pas trop mal.
Par contre, si jamais tes requêtes SQL merdent, il faut l'handler (tu ne le fais pas tout le temps).
Le mieux, c'est de faire un vrai handler d'erreur plutôt que d'afficher tes erreurs directement sur le site.
Sur lephpfacile, quand une erreur est générée, elle est loguée en base, je ne l'affiche pas, et je redirige le mec sur la home du site (si y'a une erreur en home, je redirige le mec sur une pauvre page HTML).