Sylvain a écrit :
Une question au passage sur Fasterfox.
Imaginons, par exemple, un forum; vous êtes sur un sujet.
Un lien indique "surveiller ce sujet".
Si Fasterfox précharge ce lien, le script PHP va indiquer que l'utilisateur veut surveiller le sujet ?
Je veux dire par là: FasterFox peut-il charger des pages contenant des scripts PHP, et ainsi faire de grosses bétises ?
Oui, il prend tous les liens... Sauf que là, je serais tenté de dire que ce n'est pas un problème de FasterFox, mais plutôt un problème de conception du forum.
En effet, une action comme "surveiller ce sujet" possède ce qu'on appelle un "effet de bord" : quelque chose est modifié en base de donnée. L'état de l'application est changé. Selon la spécification du protocole HTTP, on sait que (anglais, désolé) :
a écrit :
GET and HEAD methods SHOULD NOT have the significance of taking an action other than retrieval. These methods ought to be considered "safe".
Donc une URI appellée par GET (donc un lien normal standard bidon) ne doit rien faire d'autre que de retourner une page. Or là, on fait autre chose, on active la surveillance d'un sujet.
Il faudrait donc que le lien "surveiller" soit en fait un mini formulaire transmis en POST. Donc au lieu de :
<a href="surveille.php?topic=1234">Surveiller</a>
On ait :
<form action="surveille.php" method="post">
<div>
<input type="hidden" name="topic" value="1234" />
<input type="submit" value="Surveiller" />
</div>
</form>
Là on est bon
Et chose encore plus classe, faudrait que le script
surveille.php renvoi un code HTTP "405 Method Not Allowed" s'il est accedé par GET, et là on est vraiment encore plus bon
Y'a eu une histoire là dessus sur je sais-plus-quel CMS qui avait des lien "supprimer cet article" en GET, et pour confirmation juste une boîte de dialogue en JavaScript. Et un gars avait FasterFox (ou google machin, je sais plus), qui s'amusait à tout préloader... Y compris les lien de suppression. Et comme y'avait pas de confirmation côté serveur (juste une confirmation javascript), tous les articles ont disparu d'un coup, jusqu'à ce qu'il se rendent compte de leur erreur...
Moralité : on y gagne toujours à respecter les spécifications