Verification d'un formulaire pour ajout en base

Dimanche 25 Mai 2008 17:33

bonjour a tous,

Je suis en train de développer une interface pour les personnes de mon club pour qu'il puisse ajouter une news sur le site.

Mais j'ai entendu dire qu'il faut quand même filtrer ce qui est mis dans le formulaire pour éviter l'ajout en base de code dangereux...

Avez vous un script qui fait ça ou pouvez vous m'expliquer ce qu'il est nécessaire de faire comme controles...

Merci a vous.

Edit : A moins que je fasse un système de validation par le webmaster..? Que feriez vous?
Message modifié 1 fois, dernière modification Dimanche 25 Mai 2008 17:34 par Syntoc
Diffusez vos matchs et vidéos en direct live sur http://www.pingendirect.fr/

Lundi 26 Mai 2008 21:45

Il faudrait préciser ta base de données, ainsi que le langage utilisé coté serveur Clin d'oeil
http://tt.mereville.free.fr <-- refait a neuf

Mardi 27 Mai 2008 09:15

Je ferai soit un système de validation par le webmaster, soit l'obligation de se connecter avec un login et mot de passe avant de créer une news. Cette deuxième solution permet aussi de limiter l'accès aux personnes mal intentionnées.

Mardi 27 Mai 2008 10:06

Merci pour vos réponses.

Je développe en Mysql et php.

les personnes doivent se connecter.

Les utilisateurs de mon club peuvent poster une news et d'autres choses.
Les utilisateurs inscrits peuvent seulement poster un évènement de calendrier ou une proposition d'ajout de club pour l'annuaire de notre base de données.

Les groupes d'utilisateurs étant ceux liés au forum phpbb3.

Je pense que pour tous, je mettrai un système de validation ce qui nécessitera seulement de faire une vérification de champs vides.

Je pense que ce sera le plus sécurisant.
Message modifié 1 fois, dernière modification Mardi 27 Mai 2008 10:07 par Syntoc
Diffusez vos matchs et vidéos en direct live sur http://www.pingendirect.fr/

Mardi 27 Mai 2008 11:30

Absolument tout ce qui peut rentrer dans ton site doit être contrôlé.

Un premier filtre pour restreindre la saisie aux seules personnes autorisées n'est pas suffisant.
- parce que même une personne autorisée et bien intentionnée peut saisir de mauvaise chose.
- parce que si ton système de contrôle d'accès est zappé, ton site est grand ouvert au pirate.

Il ne faut pas se faire d'illusion, il y a toujours des trous dans un site qui accepte du contenu externe. Le but c'est que ce soit assez difficile à ouvrir pour que l'attaquant passe son chemin.

Évidement, les contrôles sont faits côté serveur. Les éventuels contrôles faits côté client ne servent qu'à l'ergonomie.


C'est comme une porte blindée. Cela ne protège ton appartement que quelques minutes de plus qu'une porte normale. Mais ces quelques minutes suffisent généralement pour que le cambrioleur te préfère ton voisin.

Mercredi 28 Mai 2008 09:50

Merci mikis, Je pense garder un syèstème de valisation, de cette façon, je garde le contrôle sur tout ce qui sera affiché.

Un question : Est-ce que seulement en ajoutant des mots en base (via un insert), on peut me pourrir ma base? ou la modifier?
La ça poserai probleme
Diffusez vos matchs et vidéos en direct live sur http://www.pingendirect.fr/

Mercredi 28 Mai 2008 11:51

Tu as le <a href="http://fr.wikipedia.org/wiki/Cross_site_scripting" title="http://fr.wikipedia.org/wiki/Cross_site_scripting">Cross_site_scripting</a>, les caractères interdits et certainement plein d'autres choses amusantes que je ne connais pas.

Pour les caractères interdits, imagine qu'un plaisantin saisisse ce qui sert de délimiteur de champ à ta base de données. Tu pourras toujours faire une validation à postériori, il y aura de la casse.

Il faut être conservateur. Tout ce qui n'est pas explicitement autorisé est interdit.

Jeudi 29 Mai 2008 10:22

Bonjour est-ce que si j'interdit les "<" et les ">" pour empécher tout script suffirait?

la fonction "htmlentities" encode la chaine de caractère c'est bien ça?

Bon je vais me débrouiller un peu.

Merci pour vos éclaircissements.
Message modifié 2 fois, dernière modification Jeudi 29 Mai 2008 10:24 par Syntoc
Diffusez vos matchs et vidéos en direct live sur http://www.pingendirect.fr/

Lundi 02 Juin 2008 16:13

htmlentities et addslashes devrait faire l'affaire Content
http://tt.mereville.free.fr <-- refait a neuf

Mardi 03 Juin 2008 00:14

bonsoir a tous,

tu peux egalement jeter un coup d'oeil du cote des profils de recherche
fonction ereg et eregi, c'est tres efficace.

@+


christophe

Vendredi 19 Septembre 2008 16:17

Citation de Syntoc :
Bonjour est-ce que si j'interdit les "<" et les ">" pour empécher tout script suffirait?

la fonction "htmlentities" encode la chaine de caractère c'est bien ça?

Bon je vais me débrouiller un peu.
Merci pour vos éclaircissements.


htmlentities change les caractères spéciaux genre '<' en '&amp;lt;' qui est son code caractère html, il en va de même pour '&' en '&amp;amp;' et d'autres qui sont décrits sur la page du manuel php (dispo sur PhP.net).
Ca a pour conséquence que si ton message s'affiche sur la page, il n'y ait pas de balise active qui contiendrait du code pour modifier les infos d'une page. Ca peut aller de l'affichage d'image à caractère pornographique à la place des photos d'équipes de club, en passant par le blocage de la page (en redirigeant l'utilisateur vers un autre site) ou pire encore si ton site possède des données sensible pour les utilisateurs, le petit malin peut tout simplement changer la page de renvoit de formulaire (le action <form action="">Clin d'oeil par une adresse d'une machine qu'il possède. Il suffira alors de lire les logs de cette machine pour obtenir les logins et mot de passes transmis par les utilisateurs.

Au pire les petites "vengeances" puériles ne vont que sur des redirections vers teletubbies, bisounours ou site porno mais c'est tout :-) Un simple effacement du post/de la news/du message te permet de retrouver ton site comme il était avant.

Citation de EnergieZ :
htmlentities et addslashes devrait faire l'affaire Content


oui le addslashes permet de faire en sorte que les caracteres ' (apostrophe), " (double quote) et autres soient précédés d'un '\'. Cela permet d'éviter quelque attaques SQL_INJECTION.
en gros le principe est de modifier la requete SQL qui va etre posée afin qu'elle agisse sur la base de données... On peut demander un effacement de la base de données, une modification de mot de passe d'un ou plusieurs utilisateurs, etc. Mais cela nécessite de connaitre le nom de la base de données ou des tables (pour l'effacement), le schema de la base de données (pour l'insertion et modification des données) ET SURTOUT que l'utilisateur par lequel on se connecte à la base de données ait les droits suffisants pour effectuer l'action voulue.

Pour ce type d'attaque, il faut etre sacrément tordu d'esprit et rudement abruti car je ne vois pas trop l'intérêt de jouer avec la base de données d'un site de ping...

Voili voilou. Désolé d'avoir été si long.

Mardi 23 Septembre 2008 11:42

Merci NaBal
Diffusez vos matchs et vidéos en direct live sur http://www.pingendirect.fr/
0
1
12 messages

Vous êtes ici : Accueil > Forums > Développement de vos sites