Faire le point sur les saisies de formulaire et résoudre les failles de sécurité. - Forums de discussion

Navigation

Accueil du forum » PHP » Faire le point sur les saisies de formulaire et résoudre les failles de sécurité.


Le sujet

icoFaire le point sur les saisies de formulaire et résoudre les failles de sécurité.
Par ico, le Mercredi 26/04/2006 à 08h32'10
437 messages
Bonjour tout le monde.
Je fais remplir comme bon nombre de site des données qui sont transmises par requête SQL au serveur. Je fais le point actuellement sur les failles concernant les saisies utilisateur de mon site.

Cela me donne pour une saisie pseudo :
- Si le champ est plein
- Si le champ contient des caractères alphanumériques
- Si le champ ne contient pas de code type html
- Si le champ ne contient pas de code type rejection SQL
- Si on n’a aucun caractères spéciaux hormis le _ ou le – (dans ico-19 ou ico_19)
Et la je n’en voie pas d’autre.

Cela me donne pour une saisie passe :
- Si le champ est plein
- Si le champ contient des caractères alphanumériques
- Si le champ ne contient pas de code type html
- Si le champ ne contient pas de code type rejection SQL
- Si on n’a aucun caractères spéciaux hormis le _ ou le – (dans toto_21348 ou toto-3527)
Et la je n’en voie pas d’autre.

Idem pour la confirmation du mot de passe.

Cela me donne pour une saisie mail:
- Si le champ est plein
- Si le champ contient des caractères alphanumériques
- Si le champ ne contient pas de code type html
- Si le champ ne contient pas de code type rejection SQL
- On est obliger d’accepter les caractères spéciaux mais alors par rapport a la rejection SQL on ouvre une faille !!!
Et la je n’en voie pas d’autre.


Est-ce que quelqu’un peut me dire si j’ai d’autres tests à effectuer !
Et puis ensuite je réglerais le cas des failles notamment par rapport à la rejection SQL.

Merci beaucoup pour vôtre aide.
Amitiés.

________________
"L'homme a l'avenir devant lui et il l'aura dans le dos chaque fois qu'il fera un demi tour!" (Pierre Dac)

Les réponses

raptorPar raptor, le Mercredi 26/04/2006 à 09h06'16
2218 messages
Ben tu peux faire tout ca avec un seul if par champs....

exemple pour pseudo :
if (ereg("^[a-zA-Z0-9_-]{0,30}$",$pseudo))   {
//pseudo ok
} else {
//pseudo pas ok
}


et pour mail :
if (ereg("^[a-zA-Z0-9_@.-]{0,255}$",$mail))   {
//mail ok
} else {
//mail pas ok
}


Bon l'ereg du mail est tres legere la, c'est juste pour l'exemple.

Au lieu de te faire chier a verifier que tes champs ne contiennent pas ci ou ca, verifie simplement qu'ils contiennent ce que tu veux...

________________
Fondateur de Net-Pratique,
Ancien webmaster.
Statut: Administrateur/Webmaster

icoPar ico, le Mercredi 26/04/2006 à 09h25'31
437 messages
Donc plutot que de tester avec plusieurs if, en fait j'aurais pu simplifier depuis plus longtemps que ca ? Ou alors cela ne fais que réglé un des cas ?

Par ce que si ca règle presque tout alors c bien mieux oui !

Merci beaucoup pour cet exemple. Je vais concocter un truc

Amitiés.

________________
"L'homme a l'avenir devant lui et il l'aura dans le dos chaque fois qu'il fera un demi tour!" (Pierre Dac)

raptorPar raptor, le Mercredi 26/04/2006 à 10h10'35
2218 messages
Ben ca regle tout ca....
Lis l'ereg, ca veut tout dire

[Message édité par raptor le 26/04/2006 à 10h11'37]

________________
Fondateur de Net-Pratique,
Ancien webmaster.
Statut: Administrateur/Webmaster

icoPar ico, le Mercredi 26/04/2006 à 10h44'17
437 messages
Si je prend cer ereg:
if (ereg("^[a-zA-Z0-9_-]{0,30}$",$pseudo))   {
//pseudo ok
} else {
//pseudo pas ok
}

J'ai:

du début à la fin de la chaine, autorisation pour les lettres minuscules, les lettres majuscules et les chiffres de 0 à 9 ainsi que les - et _ . Tout le reste étant refuser d'on les " et ' et les @ et j'en passe.

Dans le second cas:

if (ereg("^[a-zA-Z0-9_@.-]{0,255}$",$mail))   {
//mail ok
} else {
//mail pas ok
}


On autorise du début à la fin de la châine les lettres minuscules, les lettres majuscules, les chiffres, le _, le -, le @, et le . par contre on interdit les " et ' donc pas possibilité de mettre de rejection sql.

Enfin si j'ai bien tout suivie.

Par contre moi jusque la, pour les adreses mails, j'employer cela:

if(ereg("^[[:alnum:]]+[[:punct:]]?[[:alnum:]]+@[[:alnum:]]+[[:punct:]]?[[:alnum:]]+\.[[:alpha:]]{2,3}$", $mail_mbre))
{
   email ok
}
else
{
   email pas ok
}


Bon en même temps tu a fais bien plus simple. je vais voir dans les deux cas la meilleur solution.

J'espère que je me suis pas tromper sur les regex précédentes. Enfin si j'ai bien tout compris

Encore merci pour les infos.
Amitiés.

[Message édité par ico le 26/04/2006 à 10h45'22]

________________
"L'homme a l'avenir devant lui et il l'aura dans le dos chaque fois qu'il fera un demi tour!" (Pierre Dac)

icoPar ico, le Mardi 23/05/2006 à 09h07'43
437 messages
Petite question en passant:
Peut t on faire mieux que ca au niveau sécurité et réjestion sql ?

if(ereg("^[[:alnum:]]+[[:punct:]]?[[:alnum:]]+@[[:alnum:]]+[[:punct:]]?[[:alnum:]]+\.[[:alpha:]]{2,3}$", $mail_mbre))
{
   email ok
}
else
{
   email pas ok
}


si oui comment ?

Merci beaucoup pour vos indications.
Amitiés.

________________
"L'homme a l'avenir devant lui et il l'aura dans le dos chaque fois qu'il fera un demi tour!" (Pierre Dac)

raptorPar raptor, le Mardi 23/05/2006 à 09h35'56
2218 messages
Ben enfait je trouve que ca a pas beaucoup d'interet, car la personne soit elle met son veritable email, qui sera donc forcement valide, soit si ton ereg verifie bien et qu'elle ne veut pas mettre son mail, elle en mettra un faux mais qui semble valide.

Donc au final, je vois pas l'interet de verifier à fond la validité structurelle de l'adresse.

C'est juste mon point de vue

________________
Fondateur de Net-Pratique,
Ancien webmaster.
Statut: Administrateur/Webmaster

icoPar ico, le Mardi 23/05/2006 à 09h44'40
437 messages
Donc en gros on vérifie juste que son email contiennent pas de rejection sql ?

Ce qui revient à ce que tu ma mis plus haut

C'est simple, et effectivement il n'y a peut être pas intérêt à tout vérifier.

Merci beaucoup pour la réponse.

Amitiés.

________________
"L'homme a l'avenir devant lui et il l'aura dans le dos chaque fois qu'il fera un demi tour!" (Pierre Dac)

xersesPar xerses, le Dimanche 06/08/2006 à 18h04'27
682 messages
Je relance le sujet de mars parce que j'ai une question sur le même principe.

J'ai un formulaire dans lequel je rentre une phrase avec ponctuation, accents et tout le tralala.

Comment faire pour tester si cette phrase n'est pas une requete sql ? Sachant que cette phrase peut contenir des " et des '.

Merci pour les réponses.

________________
Anything that can go wrong will go wrong (Murphy)
Statut: Modérateur

raptorPar raptor, le Mardi 08/08/2006 à 09h05'28
2218 messages
xerses à dit:

Comment faire pour tester si cette phrase n'est pas une requete sql ? Sachant que cette phrase peut contenir des " et des '.


Pas évident çà. Pourquoi vouloir faire ceci ?
Est-ce pour eviter un éventuel risque d'injection sql, ou est-ce le but même du script ?

________________
Fondateur de Net-Pratique,
Ancien webmaster.
Statut: Administrateur/Webmaster

xersesPar xerses, le Mardi 08/08/2006 à 17h03'27
682 messages
juste éviter les risques d'injection. C'est en fait une page qui permet aux membres de contribuer à un jeu dont la source est une phrase. Donc les personnes rentrent la phrase et l'envoi.

Sauf que mon jeu, par la suite, a besoin de tous les caractères de la phrase (accents, points d'interrogations, guillemets, ...).

Cela semble impossible vu qu'une requete sql est aussi une phrase comprenant des " et '.

Avis aux experts

________________
Anything that can go wrong will go wrong (Murphy)
Statut: Modérateur

Pages

Réponses les plus anciennes... 12 ...Réponses les plus récentes

A lire également

- Les conditions générales d'utilisation du site

Top-sites membres

Web Soluces | -8 pointsCalitel, votre portail des loisirs multimédia | -14 pointsSuperSalon.NET | -15 pointsMéta Annuaire | -16 points

Discussions récentes dans les forums

Sujet Forum
depanmonpcEchange de liens site depannage informatique.
Sujet posté par depanmonpc le 07/01/2009 à 16h48'11
Le comptoir » Echange de liens / Recherche de partenaires
xersesRe: compression d'images
Réponse postée par xerses le 07/01/2009 à 00h29'37
Graphisme / Photographie » Photographies
tienoRe: IE 7 VS Firefox 2
Réponse postée par tieno le 04/01/2009 à 18h05'36
Internet » Autres sites à voir
rootRe: Espace-Membre : pb connexion
Réponse postée par root le 02/01/2009 à 16h47'50
Développement » PHP
xersesRe: probleme de fenêtre [Réglé]
Réponse postée par xerses le 01/01/2009 à 20h16'20
Net-Pratique.fr » Informations
ced51Re: liens , sport Mécanique
Réponse postée par ced51 le 27/12/2008 à 12h18'48
Le comptoir » Echange de liens / Recherche de partenaires
ced51pages
Sujet posté par ced51 le 26/12/2008 à 17h44'42
Net-Pratique.fr » Support
rerjoyeux_noel._gp.pps
Sujet posté par rer le 24/12/2008 à 10h08'30
Le comptoir » Le bar
rerserveur à domicile facile et gratuit
Sujet posté par rer le 11/12/2008 à 14h57'56
Le comptoir » Le bar
raptorRe: probleme function
Réponse postée par raptor le 11/12/2008 à 09h25'52
Développement » PHP
Membres
Pseudo:
Pass: Mémoriser ?
Problème d'identificationInscription gratuite
Tribune libre
CNIL: 1098091
Connectés: 23