Formulaire de contact - Sécurité

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formulaire de contact - Sécurité

Re: Formulaire de contact - Sécurité

par S3reine » 13 mars 2012, 11:31

Je vous remercie tous. Je vais tester un peu tout ça.

Pour le choix du codage à la main, c'est en faite un choix par défaut, ayant un bac+2 obtenu dans un DUT très général, j'ai de grosses lacunes sur le développement, mais j'aime faire ça et je ne demande qu'à apprendre. Donc sur le sujet des framework, je n'ose pas tellement me lancer dedans, vu que j'ai pas eu grand chose sur le sujet. (et dans l'entreprise, je suis la seule développeuse web)
Ensuite niveau sécurité, le site est simplement une sorte de carte de visite, avec 2 formulaires de contacts à protéger.

Le site est pratiquement fini, j'en suis aux finitions, résolution des bugs, amélioration de l'affichage, du code, et sécurisation des page contact et candidature. ^^

Si vous avez d'autres éléments à ajouter, n'hésitez pas.

Re: Formulaire de contact - Sécurité

par AB » 12 mars 2012, 18:20

Pour protéger tes headers de mails tu peux utiliser une fonction genre :
function Protege_header($value) 
{
	$value = str_replace("\n", "", str_replace("\r", "", $value));
	return $value;
}

Re: Formulaire de contact - Sécurité

par Mazarini » 12 mars 2012, 15:50

Pour toute saisie, il est bien de tester avec des quotes et des double quote. Ca peut faire planter le SQL ou modifier l'affichage HTML (<input type="text" value="toto"titi"> ne montre que toto au lieu de toto"titi). Pas la peine de trouver la faille, si ' et " sont bien gérés, pas de risque.

Pour les mails, tester avec des zones saisies avec des saut de lignes (utiliser un formulaire particulier éventuellement).

Pour le html vérifier que les codes non autorisée sont bien transformé. Seule des truc de présentation simple sont à autoriser. Le plus simple est de paramétrer un tableau avec les codes autorisé et d'en ajouter par la suite. A éviter ceux qui ont un attribut src.

J'ajoute qu'il faut faire attention au modification d'url à la main (edit sur PHPFrance, ce problème est testé^^).

Re: Formulaire de contact - Sécurité

par Shenryu » 12 mars 2012, 15:38

Salut,

Tu peux regarder également du côté de ces failles de sécurité qui sont assez courantes (liste non exhaustive) :
- l'injection SQL
- include (par exemple dans un système de pseudo-frames mal codé)
- XSS (Cross-Site Scripting)
- CSRF (Cross-Site Request Forgery)

Tu as deux manières de tester ton code.
La plus laxiste consiste à vérifier simplement si ta sécurité te permet de récupérer les données de la manière que tu le souhaites (par le biais d'affichage à l'écran par exemple).
Vérifier :
- que ton code est bien échappé contre l'injection SQL.
- que tes headers sont bien au format que tu souhaites.
- que les balises que tu souhaites autoriser le sont bien et surtout que les autres ne le sont pas ^^
- ...

La plus poussée (et donc celle qu'il faut que tu utilises) consiste à effectuer directement le test à partir de ton application. En gros, ça consiste à essayer de détruire/bypasser ce que tu as fais.
Tu saisies des données dans ton formulaire et tu valides que chaque règle que tu as voulu mettre en place est respectée. Bien sûr, il va te falloir une liste exhaustive de toutes les choses à effectuer et valider qu'une modification de code à un endroit n'entraîne pas des effets de bord à un autre.

Je dois réaliser un site (ainsi que d'autres projets). J'ai décidé de coder intégralement à la main tout le site, pour la simple raison que, utiliser un framework/CMS rendrait le site lourd, alors que celui ci ne propose pas beaucoup de contenu, mais surtout beaucoup de jQuery.
Je fais une petite aparté là-dessus afin de te donner mon avis personnel car j'aurai plutôt fais le contraire.. Sur une grosse application où tu as des besoins très spécifiques (ou sur une application générique que tu réutiliseras pour des centaines d'autres), te lancer dans quelque chose de maison et passer du temps à le sécuriser n'est pas gênant (je ne le préconiserai pas pour autant) puisque ce temps va se noyer dans la masse.
Au contraire, une petite application où tu n'as pas des gros besoins PHP, tu vas quand même être obligé de tenir compte de l'aspect sécurité qui a lui seul te prendra autant de temps que de faire ton site à partir d'un framework/CMS. Je ne parle pas de l'aspect SEO, architecture, etc. et développement que tu devras y ajouter.
Tu n'as pas que des frameworks/CMS "lourds", certains peuvent répondre à des besoins plus spécifiques que d'autres.
Il ne faut pas oublier que, ne serait-ce qu'avec une bonne configuration Apache/PHP/MySQL, tu optimiseras davantage tes temps de réponse qu'en inspectant/optimisant des dizaines de milliers de lignes de code PHP ;) Pour du site vitrine à (très) fort trafic, tu as même des solutions de cache complémentaires.

++

Re: Formulaire de contact - Sécurité

par S3reine » 12 mars 2012, 14:28

Oki très bien, ... Mais j'aime pas vraiment l'idée de sécurisé du code à l'aveuglette, c'est-a-dire, sans pouvoir tester si celui ci est sécurisé ou non.
As tu des idées de tests à faire?

Re: Formulaire de contact - Sécurité

par Mazarini » 12 mars 2012, 13:01

Pour ce qui est des problèmes liés au code html saisie, le plus simple est de limiter explicitement les balises autorisées plutôt que les balises interdites. Ce que j'ai pu constaté, c'est l'ajout de html pour demander une reconnexion (image provenant d'un autre site ?) et donc piquer les identifiants.

Pour les mails il y a des problèmes de sécurité avec le contenu des entêtes si une partie est saisi par l'utilisateur avec l'ajout de saut de ligne dans les zones. Je n'ai pas vraiment compris, mais il faut vérifier que les adresses mails ou le sujet ne contiennent pas de saut de ligne (si saisi par l'utilisateur).

Formulaire de contact - Sécurité

par S3reine » 12 mars 2012, 12:45

Bonjour.
Je suis une jeune diplômée en développement Web, et me voici sur mon premier boulot dans le domaine.

Je dois réaliser un site (ainsi que d'autres projets). J'ai décidé de coder intégralement à la main tout le site, pour la simple raison que, utiliser un framework/CMS rendrait le site lourd, alors que celui ci ne propose pas beaucoup de contenu, mais surtout beaucoup de jQuery.

Dans ce site, j'ai des formulaires de logins, qui sont, normalement, sécurisés puisque je prépare mes requêtes.
Mais j'ai aussi des formulaires de contacts et de candidatures, qui envoient des mails. J'ai sécurisé légèrement, pour éviter l'envoie de mail vide, avec du javascript. Mais j'aimerais renforcer la sécurité avec du php.
Dans cet envoi de mail, les utilisateurs ont la possibilité d'ajouter des balises html (enfin, je peux désactiver ça, c'est un éditeur de texte que mon patron voulait et qu'il trouve plus sympa).
L'envoi de mail se passe bien pour le moment, mais j'aimerais tout de même renforcer la sécurité, et surtout, pouvoir tester la sécurité.

Je ne m'y connais pas bien en injection sql, ou autre, j'ai déjà essayer d'ajouter des alert entre deux balises script, mais ça n'affiche rien. (enfin j'ai tester avec le formulaire incomplet aussi, je peux pas tester l'envoie de mail)

Voilà, si quelqu'un pouvait me conseiller sur la manière de tester la sécurité de mon formulaire. J'ai déjà vu pas mal de tuto, mais la plupart s'applique pour un formulaire qui rentre des données dans la BDD.