Testez mon site svp

Le problème exposé dans ce sujet a été résolu.

Je serais curieux de savoir quelle est la protection appliquée contre l'injection XSS.

Visiblement, c'est un truc custom qui vire toutes les balises et non htmlspecialchars ou équivalent. Je n'ai pas réussi a mettre cette protection en défaut, mais c'est généralement une meilleure idée d’échapper tout.

Sinon, j'ai trouve un autre vecteur de XSS, a l'insertion d'un hyperlien. Cf. page http://vacafiens.fr/Espace_pros/avis_pros.php (passer la souris sur le dernier lien déclenche une redirection).

+2 -0

Bonjour à tous,

Je vais répondre en vrac !

Concernant la captcha, j'ai essayé vite fait hier, mais évidement j'ai raté mon coup ! A reprendre après avoir régler le pb du form pro.

A la place du htmlspecialchars, j'ai mis strip_tags

D'après moi ta page d'accueil devrait exposer directement le contenu. Tu peux mettre un petit message mais tu devrais présenter directement la liste des derniers avis déposés. Au moins les gens sauraient directement de quoi parle le site.

Par exemple en pied de page comme ici avec les derniers sujets ?

Question subsidiaire, as-tu cherché si il existait pas déjà des sites tout prêt pour ce genre de site plutôt que de recoder un site entièrement ? Tu gagnerai beaucoup de temps et de sécurité.

Kje

Oui, j'ai regardé mais le but c'était que j'apprenne.

C'est mon premier site, j'avais jamais regardé une ligne de code avant.

Par rapport à l'ip: j'ai bien compris que ça suffit pas pour qlqn de mal intentionné, mais alors il faut que je mette un captcha sur chaque form ? Et comment empêcher un utilisateur de poster plusieurs avis sur un même camping sans l'ip ?

Sinon, j'ai trouve un autre vecteur de XSS, a l'insertion d'un hyperlien. Cf. page http://vacafiens.fr/Espace_pros/avis_pros.php (passer la souris sur le dernier lien déclenche une redirection).

yoch

Comment je peux empêcher l'injection directement dans le lien parce que je le vérifie comme ça :

1
if(!empty($_POST['web']) AND filter_var($_POST['web'], FILTER_VALIDATE_URL) === false)

Normalement, il ne devrait pas être validé ?

A la place du htmlspecialchars, j'ai mis strip_tags

C'est un peu violent comme approche, mais apparemment efficace. L'ennui, c'est que tu peux supprimer des trucs valides.

Comment je peux empêcher l'injection directement dans le lien parce que je le vérifie comme ça :

1
if(!empty($_POST['web']) AND filter_var($_POST['web'], FILTER_VALIDATE_URL) === false)

Normalement, il ne devrait pas être validé ?

clenake

La validation est syntaxique, mais ne protège absolument pas contre les injections. Voici un article sur la question.

Tu pourrais être tentée d'utiliser urlencode, mais tu risquerais de rendre invalide des chaines déjà proprement encodées. En fait, il te suffit d’échapper le caractère " (que tu utilise comme délimiteur) en le remplaçant par %22.

+0 -0

"This function tries to remove […] HTML tags" ( http://php.net/manual/en/function.strip-tags.php ) Cela me rend un peu sceptique sur l'efficacité de cette méthode. Je n'ai pas non plus trouvé de contre-indication (sauf qu'en postant le message "</div></div></div>", strip_tags le transforme en message vide) mais ce n'est pas généralisable (<div class="<?php echo strip_tags($blabla); ?>"> ne marchera pas comme attendu).

Pour ma part, je pense qu'il sera plus utile sur le long terme de passer par un CMS (type Wordpress ou autre peu importe) car il est possible d'y trouver des plugins contre le spam, pour ajouter des calendriers d'évènements, des commentaires, etc. Cela permettra aussi de "reposter" sur d'autres sites et de bénéficier des icônes, titres, nom d'auteurs etc automatiquement chargés. Egalement, pré-validez les input coté client via l'attribut "pattern" par exemple ( http://toile.reinom.com/lattribut-pattern-du-tag-input/ ): cela permettra de corriger plus facilement un formulaire mal renseigné. Je ne sais pas comment le site du pro est validé, mais est-ce vraiment "safe"?… Aussi, ne voyant aucun token ou système similaire, on doit pouvoir faire poster n'importe quoi à n'importe qui via une CSRF. Pour finir côté code, la version de PHP est donnée dans les headers HTTP: cela ne sert à rien, et ce n'est pas recommandé même.

Sinon, je n'ai pas trouvé le menu très visible à la première visite car trop "planqué" dans l'arrière-fond. Pour les messages, il est dit "merci de signaler tout contenu abusif", mais on n'a pas d'indication sur comment les signaler. Pour ma part, la notion de "contact" n'est pas celle de commentaire: pourquoi les autres verraient-ils les messages qui vous sont destinés? Ou alors, ce n'est pas "contact", mais "commentaires" qu'il faut comme labels. Je pense qu'une validation manuelle de "l'espace pro" est indispensable, pour vous assurer que les messages sont bien issus des professionnels agrés (et il vous faudra donc vérifier 1, que le contact du pro est le bon, et que 2, ce pro a bien voulu lui-même donner cet avis-ci [sinon, n'importe qui aurait pu parler en son nom]).

Pourquoi les avis sur les campings peuvent-ils porter sur une date dans le futur (genre 2040!)? Et comment l'upload de fichier est-elle vérifiée?

PS: Bonjour tout le monde pour mon premier post ici :)

+0 -0

Plus probablement une gestion des erreurs un peu pauvre.


Du coup, en observant cette page, il y a également un vecteur de XSS sur le lien "retour a la liste", mais certains browsers semblent être assez intelligents pour le détecter et le bloquer (chez moi, chrome et edge le bloquent, mais pas firefox).

http://vacafiens.fr/Campings/Modale/affichage.php?dep_id=0.php%22%3E%3C/a%3E%3Cimg%20src%3d%27x%27%20onerror%3d%22alert(%27lol%27);%22%20%3E%3Ca%20href%3d%22page&campings_id=1

Et si on tente d'injecter un script entier (balises <script>), on tombe sur un Service unavailable peu convaincant.

Bonjour à tous !

Désolée j'avais plus de pc donc me revois là :)

Merci à tous pour vos tests et conseils, c'est sympa d'avoir pris le temps de le faire.

Je vais pouvoir m'y remettre :)

Du coup vu le grand âge du post, je le ferme.

Merci encore et à bientôt

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte